sockjs-tornado er en Python server side motstykke av SockJS-klient nettleser bibliotek kjører på toppen av Tornado rammeverk.
Forenklet ekko SockJS server kunne se mer eller mindre slik ut:
fra tornado import web, ioloop
fra sockjs.tornado import SockJSRouter, SockJSConnection
klasse EchoConnection (SockJSConnection):
& Nbsp; def on_message (selv, msg):
& Nbsp; self.send (msg)
hvis __name__ == '__main__':
& Nbsp; EchoRouter = SockJSRouter (EchoConnection, '/ echo')
& Nbsp; app = web.Application (EchoRouter.urls)
& Nbsp; app.listen (9999)
& Nbsp;. Ioloop.IOLoop.instance () starte ()
(Ta ser på eksempler for en komplett versjon).
Abonner på SockJS mailingliste for diskusjoner og support.
SockJS-tornado API
SockJS gir litt annen API enn _tornado.websocket_. Viktigste forskjellene er:
- Avhengig av transport, selve klientforbindelse kanskje eller kanskje ikke være der. Så, er det ingen _self.request_ og andre _tornado.web.RequestHandler_ egenskaper.
- Endret _open_ tilbakeringing navn til _on_open_ å være mer i samsvar med andre callbacks.
- I stedet for _write_message_, blir alle meldinger sendes ved hjelp _send_ metode. Bare i tilfelle, _send_ i _tornado.web.RequestHandler_ sender rådata over forbindelsen, uten å kode den.
- Det er praktisk _broadcast_ funksjon, som tar imot liste (eller iterator) av klienter og budskap å sende.
Innstillinger
Du kan sende forskjellige innstillinger til _SockJSRouter_, i en ordbok:
MyRouter = SockJSRouter (MyConnection, '/ min ", dict (disabled_transports = [' WebSocket ']))
Distribusjon
sockjs-tornado fungerer ordentlig bak haproxy og det anbefales tilnærming distribusjon.
Eksempel konfigurasjonsfil kan bli funnet her.
Hvis logg er full av "ADVARSEL: Tilkobling avsluttet av klienten", passerer _no_keep_alive_ som _True_ til _HTTPServer_ konstruktør:
Httpserver (app, no_keep_alive = True) .listen (port)
eller:
app.listen (port, no_keep_alive = True)
Hva er nytt i denne utgaven:
- Lagt til støtte for eldre simplejson bibliotek versjoner
- Fast installasjon script
Krav :
- Python
Kommentarer ikke funnet