SockJS server implementation for aiohttp.
Project description
aiosockjs is a SockJS server based on aiohttp PEP 3156 asyncio module.
aiosockjs 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>
Installation
Install virtualenv:
$ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py $ python3.4 ./virtualenv.py --no-site-packages sockjs
Clone aiosockjs from github and then install:
$ git clone https://github.com/aio-libs/sockjs.git $ cd sockjs $ ../sockjs/bin/python setup.py develop
To run chat example use following command:
$ ./sockjs/bin/python ./aiosockjs/examples/chat.py
Supported transports
websocket hybi-10
iframe-eventsource (EventSource used from an iframe via postMessage)
iframe-htmlfile (HtmlFile used from an iframe via postMessage.)
Not supported transports
websocket hixie-76
Requirements
Python 3.4
gunicorn 19.2.0
Examples
You can find several examples in the aiosockjs repository at github.
License
aiosockjs is offered under the Apache 2 license.
CHANGES
0.6 (2017-04-13)
Fixed support for aiohttp 2.0+.
0.5 (2016-09-26)
Mark SockJSRoute.handler and SockJSRoute.websocket as coroutines. #25
Remove a check for “ORIGIN” header #12
Process FRAME_MESSAGE_BLOB message type #12
0.4 (2016-02-04)
Fixed lost event-loop argument in sockjs.transports.websocket.WebSocketTransport
Fixed lost event-loop argument in sockjs.transports.rawwebsocket.RawWebSocketTransport
Fixed RawRequestMessage. Add raw_header argument (aiohttp 0.21+)
Fixed many warnings
Fixed sockjs.route add_endpoint without name bug
0.3 (2015-08-07)
Fixed calls of SessionManager.aquire() - was removed the unnecessary second argument.
Fixed the incorrect argument in one call of cors_headers().
Fixed many errors. The code is not perfect, but at least it was working as it should.
0.2 (2015-07-07)
Fixed packaging
0.1.0 (2015-06-21)
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.