Pushpull
Websocket to rabbitmq gateway
Install / Use
/learn @elastic-coders/PushpullREADME
######## Pushpull ######## A websocket to rabbitmq gateway ###############################
.. image:: https://travis-ci.org/elastic-coders/pushpull.svg?branch=master :target: https://travis-ci.org/elastic-coders/pushpull
BETA
Makes it easy to talk to websocket clients using rabbitmq queues.
Websocket to message broker gateway for servers::
websocket client (browser) <---> pushpull gateway <----> message broker (rabbitmq) <---> your backend application
-> the authenticator module
Includes some standard authenticator modules
Install #######
Requires python3.5+::
pip install pushpull
Test
- install a rabbitmq server and a mongodb server
- run
tox
Usage
Run the websocket server::
pushpull-server
Run the CLI websocket client::
pushpull-client challenge_websocket http://localhost:8080/pushpull user_token
Run the CLI rabbitmq client::
pushpull-client challenge_amqp amqp://localhost/ user_id
Run the CLI rabbitmq authenticator::
pushpull-client authenticate_amqp amqp://localhost/ pushpull.auth.simple_file:main,user_db.txt
The user_db.txt is a text file with one entry per line::
user_id:username:user_token
Generating messages programmatically ####################################
To pass a message to a WebSocket client through RabbitMQ you can use pika Python module::
connection = pika.BlockingConnection()
channel = connection.channel()
channel.basic_publish(exchange='pushpull.ws',
# routing_key='pushpull.ws', # broadcast to all open WebSockets
routing_key=('pushpull.ws.%d' % user_id),
body='{"test": "Test"}')
connection.close()
Build docker image ##################
install wheel::
pip install wheel
Build wheels for 3rd party and the project itself::
pip wheel -r requirements.txt -w wheelhouse pip wheel . --no-deps -w wheelhouse-app docker build -t pushpull .
Related Skills
node-connect
338.7kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
338.7kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.6kCommit, push, and open a PR
