skip to navigation
skip to content

Not Logged In

django-sockjs-tornado 0.0.1

Makes it easy to run a SockJS server in Django through Tornado

Makes it easy to run a SockJS server in Django through Tornado.

This package is basically a thin wrapper on top of sockjs-tornado which makes it dead easy to write websocket based apps on top of the sockjs Websocket emulation library.

With this wrapper you basically have access to everything else you need from your Django project such as your models and your various settings.

Because you need to run two processes (one for runserver (or wsgi) and one for socketserver) it means that the two really are separate python processes so you can't easily do things like registering signals and trigger them in one process and have them fire in another.

Getting started

Create a class somewhere that looks something like this:

from sockjs.tornado import SockJSConnection

class MyConnection(SockJSConnection):
    def on_open(self, request):
         pass
    def on_message(self, message):
         pass
    def on_close(self):
         pass

Next, you need to put the loction of this in a setting in your settings.py something like this:

SOCKJS_CLASSES = (
    'myproject.myapp.myfile.MyConnection',
)

Next, to start the server simply run:

python manage.py socketserver [--help]

You'll still have your regular django server too in a separate terminal:

python manage.py runserver

Now you should be able to write the juicy Javascript using sockjs-client. You can start by downloading the latest minified version from the CDN.

A simple app might look like this:

sock = new SockJS('http://localhost:9999/echo');
sock.onmessage = function(e) {
  console.log(e.data);
};
sock.onclose = function() {
  console.log('closed :(');
};
sock.onopen = function() {
  console.log('opened :>');
  letTheMadnessBegin();
};

function letTheMadnessBegin() {
  // silly, but you get the idea
  sock.send(JSON.stringify({
    name: $('#name').text(),
    message: $('input').val()
  }));
}

Getting fancy

There's a shitload more things you can do with this of course. For example, you might want to add some form of authentication. Since the on_open handler receives a request you can use that to ask for request.get_cookie() which is left to the reader as an exercise.

There is a slightly more fancy example included in this package under example which might get you some ideas. It's a fully working chat application that just works.

This package is built mainly on Serve Koval's amazing work on sockjs-tornado which has lots of more examples and documentation that might help you. For example, it lists to a sample HAProxy configuration which you might need once you take your project live since you can't keep exposing port 9999 on a production system.

 
File Type Py Version Uploaded on Size
django-sockjs-tornado-0.0.1.tar.gz (md5) Source 2012-09-06 5KB
  • Downloads (All Versions):
  • 4 downloads in the last day
  • 27 downloads in the last week
  • 168 downloads in the last month
  • Author: Peter Bengtsson
  • Home Page: http://github.com/peterbe/django-sockjs-tornado/
  • License:
    Copyright (C) 2012 Peter Bengtsson
    
    Permission is hereby granted, free of charge, to any person obtaining a copy of
    this software and associated documentation files (the "Software"), to deal in
    the Software without restriction, including without limitation the rights to
    use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
    of the Software, and to permit persons to whom the Software is furnished to do
    so, subject to the following conditions:
    
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.
  • Requires tornado, sockjs
  • Package Index Owner: peterbe
  • DOAP record: django-sockjs-tornado-0.0.1.xml