Websockets mit Tornado: Erhalten Sie Zugriff von außen, um Nachrichten an Clients zu senden

Ich beginne in WebSockets einzusteigen, um Daten von einem Server auf verbundene Clients zu übertragen. Da ich mit Python jede Art von Logik programmiere, habe ich mir bisher Tornado angesehen. Das folgende Snippet zeigt das grundlegendste Beispiel, das man überall im Web finden kann:

import tornado.httpserver
import tornado.websocket
import tornado.ioloop
import tornado.web

class WSHandler(tornado.websocket.WebSocketHandler):
    def open(self):
        print 'new connection'
        self.write_message("Hello World")

    def on_message(self, message):
        print 'message received %s' % message
        self.write_message('ECHO: ' + message)

    def on_close(self):
    print 'connection closed'


application = tornado.web.Application([
  (r'/ws', WSHandler),
])


if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

Wie es ist, funktioniert dies wie beabsichtigt. Ich kann mich jedoch nicht richtig auskennen, wie ich dies in den Rest meiner Anwendung "integrieren" kann. Im obigen Beispiel sendet das WebSocket nur eine Antwort auf die Nachricht eines Clients an die Clients. Wie kann ich von "außen" auf das WebSocket zugreifen? Zum Beispiel, um alle derzeit verbundenen Clients zu benachrichtigen, dass ein Ereignis aufgetreten ist - und dieses Ereignis ist KEINE Nachricht von einem Client. Idealerweise würde ich gerne irgendwo in meinen Code schreiben:

websocket_server.send_to_all_clients("Good news everyone...")

Wie kann ich das machen? Oder habe ich ein komplettes Missverständnis darüber, wie WebSockets (oder Tornado) funktionieren sollen? Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage