爲了幫助您瞭解的問題,我會給你WebSocket連接的一些細節:
- 它使用TCP
- 如果遠程客戶端(瀏覽器)正常關閉TCP連接服務器被通知(FIN)
- 如果遠程客戶端崩潰,運行客戶端應用程序的操作系統會通知服務器(RST)
- 如果服務器和客戶端之間的TCP連接是打開的,即使在一段時間內絕對沒有數據交換,連接也會被視爲打開,除非保持激活被激活。
- WebSocket規範添加了一條關閉消息,以便服務器/客戶端可以處理一個優雅的關閉
- WebSocket規範添加了ping/pong消息交換,但不強制超時。從RFC:
Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in response, unless it already received a Close frame. It SHOULD respond with Pong frame as soon as is practical.
- 在Wakanda的實現,我們收到
ping
消息作出響應,但不要把我們自己的ping
消息
RFC的這可能是一個新的功能,我們可以:
- 公開
ping
方法通過message port
與pong timeout
- 添加websocket keepalive選項與可配置的時間在添加
websocket handler
時出來。
- 在添加
websocket handler
時添加一個可配置超時的TCP保持活動選項。
暫時,你可以發送你選擇的消息發送到客戶端每ñ秒,等待與牛逼超時的響應。如果您沒有收到回覆,則可以認爲連接已丟失並關閉。
感謝您的解釋。在閱讀了一些其他websocket實現規範後,我認爲它是類似的東西。我認爲這將是一個很好的功能,但這取決於你的團隊! –