2016-09-09 7 views
0

サーバからデータを取得する単純なPythonプロセスを持っています。竜巻:javascriptページに動的にwebsocketメッセージを送信しますか?

データが収集されると、websocketメッセージをサーバCのjavascriptページに送信できます。図式的に:

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

新しいWebSocketメッセージをサーバCに「動的に」送信するにはどうすればよいですか?そうすることが可能ですか、またはJavascriptページから最初にメッセージを受け取ってから返信を送信する必要がありますか?

私はトルネードを使用していますが、私はwebsocket.WebSocketHandlerをインスタンス化し、write_message()関数を呼び出すはずです。私が見るすべての例では、このクラスの明示的なインスタンス化はありません。例:

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

どうすればいいですか?ウェブ開発の新人として、トルネードは本当に複雑に見えます。

おかげ

答えて

2

のWebSocket接続は常にブラウザによって開始されなければなりません。最初のメッセージを送信する必要はありません。それは接続を開いてサーバーからのメッセージを待つだけですが、ブラウザは常にプロセスを開始する必要があります(ブラウザはサーバーと通信する方法を知っていますが、サーバーはブラウザと通信する手段がありませんブラウザの要求への応答)

+0

ありがとう。クライアントが定期的にサーバーに新しいデータをポーリングするように、何らかのハートビートメカニズムを実装する必要があるのでしょうか? – carmellose

+0

クライアントはポーリングする必要はなく、WebSocket接続を作成して開いたままにしておく必要があります(失敗した場合は再オープンしてください)。そうすれば、サーバはそれにプッシュすることができます。 –

+0

これは私の最初の質問の目的でした:WebSocketHandlerクラスのインスタンス化の後に、明示的に竜巻のwrite_message()関数を呼び出す方法がないようです...サーバはメッセージを書き込むはずです接続が開かれた後、クライアントメッセージが到着したときに必ずしも明示的にクライアントに送信する必要はありません。ありがとう – carmellose