sockjs is a SockJS integration for aiohttp. SockJS interface is implemented as a aiohttp route. 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.
Simple aiohttp web server is required:
[server:main] use = egg:gunicorn#main host = 0.0.0.0 port = 8080 worker = aiohttp.worker.GunicornWebWorker
Example of sockjs route:
def main(global_settings, **settings): app = web.Application(loop=loop) app.router.add_route('GET', '/', index) sockjs.add_endpoint(app, prefix='/sockjs', handler=chatSession) handler = app.make_handler() srv = loop.run_until_complete( loop.create_server(handler, '127.0.0.1', 8080)) print("Server started at http://127.0.0.1:8080") try: loop.run_forever() except KeyboardInterrupt: srv.close() loop.run_until_complete(handler.finish_connections())
Client side code:
<script src="//cdn.jsdelivr.net/sockjs/0.3.4/sockjs.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>
- websocket hybi-10
- xhr-streaming
- xhr-polling
- iframe-xhr-polling
- iframe-eventsource (EventSource used from an iframe via postMessage)
- iframe-htmlfile (HtmlFile used from an iframe via postMessage.
- jsonp-polling
- Python 3.4
- gunicorn 19.2.0
- aiohttp https://github.com/aio-libs/aiohttp
You can find several examples in the sockjs repository at github.
https://github.com/aio-libs/sockjs/tree/master/examples
sockjs is offered under the Apache 2 license.