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>
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
- 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
- websocket hixie-76
- Python 3.3
- gunicorn 19.2.0
- aiohttp https://github.com/KeepSafe/aiohttp
You can find several examples in the aiosockjs repository at github.
https://github.com/aio-libs/sockjs/tree/master/examples
aiosockjs is offered under the Apache 2 license.