Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (pypi.python.org).
Help us improve Python packaging - Donate today!

Django + Gevent + SocketIO = Awesome client/server interactions

Project Description

Alternative Django support for Gevent SocketIO, this is based on mrjmad example project.

What is it useful for

SocketIO is an abstraction layer over several methods to maintain a connection between the client and the server otherwise said long-polling this includes websockets.

Checkout what are websockets?.

Documentation

Add djsocketio to your INSTALLED_APPS in settings.py

Create a live.py in an application of your project. django-socketio-alt will discover every live.py that are in applications installed against Django, so becarful with what you do install in production. live.py can start like this:

from socketio.namespace import BaseNamespace
from socketio.mixins import RoomsMixin, BroadcastMixin


class Namespace(BaseNamespace, RoomsMixin, BroadcastMixin):

    def emit_to_me(self, event, *args):
        pkt = dict(
             type="event",
             name=event,
             args=args,
             endpoint=self.ns_name)
        self.socket.send_packet(pkt)

You can specify a namespace name using the name property like so:

class Namespace(BaseNamespace, RoomsMixin, BroadcastMixin):

    name = 'chat'

If you do not, the default is to use the name of the app, for instance if the app is registred as spam.egg.chat, the namespace’s name will be chat. Connection to this namespace in the client will be done using the following code:

var socket = io.connect('http://localhost:8000/chat');

Now everything you need to know is in Gevent SocketIO documentation and for some copy-paste goodness you can have a look at the example application in example directory.

Happy living!

How to run the example application

To run the example app you will need to install gevent-socketio, if you did not pip install django-socketio-alt already:

$> pip install gevent-socketio

Since the default port for doing websocket is 8000 and the example app use this default you need to run the django project on another port:

$> ./manage.py 0.0.0.0:8001

Then run the SocketIO thread with the following command:

$> ./manage.py runserver_socketio

Open two http://0.0.0.0:8001/ windows and start the conversation.

Authors

Release History

Release History

This version
History Node

0.2.1

History Node

0.2

History Node

0.1

Download Files

Download Files

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

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
django-socketio-alt-0.2.1.tar.gz (3.6 kB) Copy SHA256 Checksum SHA256 Source Oct 25, 2012

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting