2016-09-09 1 views
0

Ich habe einen einfachen Python-Prozess auf einem Server A, dieTornado: dynamisch eine Websocket-Nachricht an eine Javascript-Seite senden?

Daten von einem Server abruft B. Sobald die Daten gesammelt werden, ich mag eine WebSocket-Nachricht an eine Javascript-Seite senden zu können, auf einem Server C Schema:

A ---send data---> B -----send websocket message ---> C 

Wie kann ich "dynamisch" eine neue Websocket-Nachricht an den Server C senden? Ist es möglich, oder muss ich zuerst eine Nachricht von der Javascript-Seite erhalten und dann eine Rückantwort senden?

Ich benutze Tornado, aber ich weiß nicht, wie ich die websocket.WebSocketHandler instanziieren und die write_message() Funktion aufrufen soll. In jedem Beispiel, das ich sehe, gibt es keine explizite Instanziierung dieser Klasse, z. B .:

app = web.Application([ ('/ws', WebSocketHandler,), ]) # the class is just declared 

Wie kann ich das tun? Tornado sieht für mich als Neuling in der Webentwicklung sehr komplex aus.

Dank

Antwort

2

Die websocket Verbindung muss immer durch den Browser gestartet werden. Es muss nicht die erste Nachricht senden; Es könnte einfach die Verbindung öffnen und dort auf eine Nachricht vom Server warten, aber der Browser muss den Prozess immer starten (weil der Browser weiß, wie man mit dem Server spricht, aber der Server hat keine Möglichkeit, mit dem Browser zu sprechen, außer in Antwort auf die Anfragen des Browsers)

+0

Danke. Bedeutet das, dass ich einen Heartbeat-Mechanismus implementieren muss, damit der Client den Server regelmäßig nach neuen Daten fragt? – carmellose

+0

Der Client muss nicht abfragen, er muss lediglich eine Websocket-Verbindung erstellen und diese offen lassen (und bei einem Fehler erneut öffnen). Dann kann der Server Dinge dazu schieben. –

+0

Ok, aber das war dann der Zweck meiner ersten Frage: Es scheint keine Möglichkeit zu geben, die tornado write_message() -Funktion explizit aufzurufen, nach der Instanziierung der WebSocketHandler-Klasse ... wie soll der Server eine Nachricht schreiben dem Client explizit, sobald die Verbindung geöffnet ist und nicht unbedingt, wenn eine Client-Nachricht angekommen ist? Danke – carmellose

Verwandte Themen