3

ブラウザが強制的に終了し、Tornadoサーバーにクローズメッセージが送信されないとします。Tornadoは、この接続がクライアント側で終了したことをどのように知っていますか(または知っていますか?)?Tornado WebSocketコードを調べても、これはわかりません。

サーバー側のon_closeメソッドが数分間呼び出されないことがあるので(おそらくクライアントが終了メッセージを送信できなかったため)、Tornadoはクライアントがなくなったことに気づき、ソケット自体。

何か洞察はありますか?

4

1 に答える 1

0

Tornado は、基になる TCP 接続が閉じているかどうかを監視します。ハンドシェークを閉じたために接続が閉じられたのか、ネットワーク エラーが発生したために接続が閉じられたのかは問題ではありません。どちらの場合でも、on_close が呼び出されます。

クライアントがネットワーク接続を失った場合、TCP スタックが接続がタイムアウトしたと判断する前に、TCP 接続がさらに数分間開いていると見なされる場合があります。その後、ソケットのクローズ、Tornado の通知などを行います。

于 2012-10-30T22:38:01.327 に答える