Skip to main content

SockJS server implementation for Pyramid.

Project description

Pyramid SockJS

Gevent-based SockJS integration for Pyramid. SockJS interface is implemented as pyramid route. It runs inside wsgi app rather than wsgi server. Its possible to create any number of different sockjs routes, ie /__sockjs__/* or /mycustom-sockjs/*. also you can provide different session implementation and management for each of sockjs routes.

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()

    return config.make_wsgi_app()

Client side code:

<script src="http://cdn.sockjs.org/sockjs-0.2.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

  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.0b1:

    $ ./sockjs/bin/pip install http://gevent.googlecode.com/files/gevent-1.0b1.tar.gz
  3. 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

  • websocket

  • xhr-streaming

  • xhr-polling

  • iframe-xhr-polling

  • iframe-eventsource

  • iframe-htmlfile

  • jsonp-polling

Limitations

Pyramid sockjs does not support multple websocket wession with same session id.

Requirements

  • Python 2.6/2.7

  • virtualenv

  • gevent 1.0b1

  • gevent-websocket 0.3.0

Examples

You can find them in the examples repository at github.

https://github.com/fafhrd91/pyramid_sockjs/tree/master/examples

License

pyramid_sockjs is offered under the MIT license.

CHANGES

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


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.0.tar.gz (61.8 kB view details)

Uploaded Source

File details

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

File metadata

File hashes

Hashes for pyramid_sockjs-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d7e965af4dfc7c7d7b9b670fd78aaa98aeae22b28fc0db7f7454a3ff31f804fe
MD5 70cce677aa92817b5afd8d279abd797c
BLAKE2b-256 b78975af371f481a75d8a870bd4f800bf2766197e20d09d6cf131e26afc313e8

See more details on using hashes here.

Supported by

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