Skip to main content

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

  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.0b2 (non-Windows):

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

Limitations

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

gevent does not support Python 3

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.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


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

Uploaded Source

File details

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

File metadata

File hashes

Hashes for pyramid_sockjs-0.3.4.tar.gz
Algorithm Hash digest
SHA256 2c5e3fd6e437425297e45f72b81303fb10daded9f352f623785ea3f15fd7e772
MD5 c21668553907a706ef05c02f6ee14137
BLAKE2b-256 f2853148cf1a8bb425099d6e3cb113993b95a8feca8951ebd2467961858b7950

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