2012-05-28 113 views
3

假設瀏覽器強制終止,並且沒有關閉消息發送到Tornado服務器。 Tornado如何知道(或甚至知道?)該連接已在客戶端被終止?縱觀Tornado websocket code並不會讓我明白這一點。Tornado的websocket實現如何找到並關閉殭屍websockets?

我問,因爲我有幾次沒有調用服務器端on_close方法(可能是因爲客戶端未能發送它的結束消息)幾分鐘,但隨後Tornado似乎注意到客戶端是消失並關閉了插座本身。

任何見解?

回答

0

龍捲風監視基礎TCP連接是否關閉。由於握手關閉或網絡錯誤發生,連接是否關閉並不重要。無論哪種情況,都會調用on_close。

如果客戶端丟失網絡連接,TCP連接可能會被視爲打開幾分鐘,然後TCP堆棧纔會確定連接超時。之後,它將關閉插座,Tornado將被通知等。