- Simplified echo SockJS server could look more or less like::
from tornado import web, ioloop from sockjs.tornado import SockJSRouter, SockJSConnection
- class EchoConnection(SockJSConnection):
- def on_message(self, msg):
- if __name__ == ‘__main__’:
EchoRouter = SockJSRouter(EchoConnection, ‘/echo’)
app = web.Application(EchoRouter.urls) app.listen(9999) ioloop.IOLoop.instance().start()
(Take look at examples for a complete version).
Subscribe to SockJS mailing list for discussions and support.
SockJS provides slightly different API than
tornado.websocket. Main differences are:
- Depending on transport, actual client connection might or might not be there. So, there is no _self.request_ and
opencallback name to
on_opento be more consistent with other callbacks.
write_message, all messages are sent using
sendmethod. Just in case,
- sends raw data over the connection, without encoding it.
- Instead of
- There is handy
broadcastfunction, which accepts list (or iterator) of clients and message to send.
You can pass various settings to the
SockJSRouter, in a dictionary:
MyRouter = SockJSRouter(MyConnection, '/my', dict(disabled_transports=['websocket']))
sockjs-tornado properly works behind haproxy and it is recommended deployment approach.
Sample configuration file can be found here.
If your log is full of “WARNING: Connection closed by the client”, pass