Skip to main content

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.4.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>
https://secure.travis-ci.org/fafhrd91/pyramid_sockjs.png

Installation

  1. Install virtualenv:

    $ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py
    $ python2.7 ./virtualenv.py --no-site-packages sockjs
  2. Install gevent 1.0rc2 (non-Windows):

    $ ./sockjs/bin/pip install https://github.com/downloads/SiteSupport/gevent/gevent-1.0rc2.tar.gz
  1. Install gevent 1.0rc1 (Windows, 32bit Python 2.7):

    $ ./sockjs/Scripts/easy_install https://github.com/downloads/SiteSupport/gevent/gevent-1.0rc2.win32-py2.7.exe
  2. Clone pyramid_sockjs from github and then install:

    $ git clone https://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

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.9 (2013-01-08)

  • Use unquote_plus instead of unquote for jsonp transport @DustyHarry

0.3.8 (2012-11-15)

  • Update sockjs-protocol-0.3.3

  • Fix TypeError in Session.__str__ method

  • Fix eventsource transport for gevent 1.0b3 version

0.3.7 (2012-07-16)

  • Explicitly open session before accept any incoming messages, for webscoket transport.

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

Download files

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

Source Distribution

pyramid_sockjs-0.3.9.tar.gz (63.6 kB view details)

Uploaded Source

File details

Details for the file pyramid_sockjs-0.3.9.tar.gz.

File metadata

File hashes

Hashes for pyramid_sockjs-0.3.9.tar.gz
Algorithm Hash digest
SHA256 f2c771e068f001fa795e042cc47f1062d02f935aa30761337a98ea172f6d1bdd
MD5 2111517b62ffb3e38315993e9db62b95
BLAKE2b-256 50cac254d2120f36f253c59ef1ce160b3afa2f67806278435bb8cf1ac2a65c12

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.3.9 This release

1 file

0.3.8

1 file

0.3.7

1 file

0.3.6

1 file

0.3.5

1 file

0.3.4

1 file

0.3.3

1 file

0.3.2

1 file

0.3.1

1 file

0.3.0

1 file

0.2.1

1 file

0.2

1 file

0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page