Skip to main content

Django Websocket for Django

Project description

Tornado WebSocket server backed with PikaClient connected on RabbitMQ.

The goal of this architecture is to provide a way to integrate full duplex websockets in synchronous application with RabbitMQ as message bus.

Server is Tornado WebSocketHandler with a PikaClient consumer.

Take a look at the simple demo chat.

Installation

git clone https://github.com/socketubs/django-bagou.git
cd django-bagou/example
virtualenv virtenv
source virtenv/source/activate
pip install django
pip install -e ..
python manage.py runserver
# In another terminal
python manage.py runwebsocket
# Go to http://localhost:8000

Incoming

For example, incoming websocket messages from Tornado are pushed to a queue (Celery for example) or just computed.

  • Browser send websocket message
  • Tornado received it * Sending AMQP message * Run Celery task (from Django?)
  • Torndo reply to websocket
  • Browser received websocket message

Sending

Django application can publish messages on RabbitMQ, which will be consumed by Pika and pushed to websockets.

  • Running arbitary Python code
  • Send AMQP message to websocket queue
  • PikaClient wich run with Tornado consumed it
  • PikaClient tell Tornado to send websocket message to browser
  • Browser received websocket message

Todo

  • Channel permission
  • User authentification based on sessionid
  • Integrated with Celery ?
  • Helpers for getting channels

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
django-bagou-0.1.0.tar.gz (29.7 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page