SockJS server implementation for Pyramid.
Project description
pyramid_sockjs
pyramid_sockjs is a gevent-based SockJS integration for Pyramid. SockJS interface is implemented as a pyramid route. pyramid_sockjs runs inside a WSGI application rather than WSGI server. This means all of your previous WSGI/Pyramid experience will be relevant. Its possible to create any number of different sockjs routes, ie /__sockjs__/* or /mycustom-sockjs/*. You can provide different session implementation and management for each sockjs route.
Gevent based server is required for pyramid_sockjs. For example gunicorn with gevent worker. pyramid_sockjs provides simple gevent based paster server runner:
[server:main] use = egg:pyramid_sockjs#server host = 0.0.0.0 port = 8080
Example of sockjs route:
def main(global_settings, **settings): config = Configurator(settings=settings) config.add_sockjs_route(prefix='/__sockjs__') return config.make_wsgi_app()
Client side code:
<script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script> <script> var sock = new SockJS('http://localhost:8080/__sockjs__'); sock.onopen = function() { console.log('open'); }; sock.onmessage = function(obj) { console.log(obj); }; sock.onclose = function() { console.log('close'); }; </script>
Installation
Install virtualenv:
$ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py $ python2.7 ./virtualenv.py --no-site-packages sockjs
Install gevent 1.0b2 (non-Windows):
$ ./sockjs/bin/pip install http://gevent.googlecode.com/files/gevent-1.0b2.tar.gz
Install gevent 1.0b2 (Windows, 32bit Python 2.7):
$ ./sockjs/Scripts/easy_install http://gevent.googlecode.com/files/gevent-1.0b2-py2.7-win32.egg
Clone pyramid_sockjs from github and then install:
$ git clone git://github.com/fafhrd91/pyramid_sockjs.git $ cd pyramid_sockjs $ ../sockjs/bin/python setup.py develop
To run chat example use following command:
$ ./sockjs/bin/python ./pyramid_sockjs/examples/chat.py
Supported transports
iframe-eventsource (EventSource used from an iframe via postMessage)
iframe-htmlfile (HtmlFile used from an iframe via postMessage.)
Limitations
Pyramid sockjs does not support multple websocket session with same session id.
gevent does not support Python 3
Pyramid sockjs can’t detect client disconnection on heroku.
Requirements
Examples
You can find several examples in the pyramid_sockjs repository at github.
https://github.com/fafhrd91/pyramid_sockjs/tree/master/examples
License
pyramid_sockjs is offered under the MIT license.
CHANGES
0.3.6 (2012-06-21)
Possible session hijacking #7
Use Configurator action for session gc start. #6
0.3.5 (2012-05-19)
fixed close/closed session states for websocket transport.
removed gunicorn monkey patche. gunicorn 0.14.3 is required.
0.3.4 (2012-05-06)
Fixed datetime serialization, assume all datetime objects in utc tz.
0.3.3 (2012-05-02)
Pass request to session factory
0.3.2 (2012-04-02)
Make ‘cookie_needed’ is configuration option
Update sockjs-protocol 0.3
0.3.1 (2012-03-27)
Fixed python2.6 compatibility. See #1
0.3.0 (2012-03-26)
Hixie 75/76 websocket protocol added
0.2.1 (2012-03-20)
Fixed websocket frame with ‘[]’
Update cors headers for dev protocol compliance
0.2 (2012-03-16)
Fixed ujson support
0.1 (2012-02-23)
Initial release
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.