2013-10-09 121 views
0

請原諒我的任何無知或術語故障。我爲一家軟件公司工作,但在支持,而不是發展。有沒有Websocket客戶端關閉連接的情況?

我們開發了一個連接到websocket服務器來傳遞和接收消息的工具。爲了接收消息,它會打開一個連接並接收消息(將它們傳遞給其他組件以供進一步處理),直到服務器關閉連接。

使用我測試過的簡單Websocket服務器(ws://echo.websocket.org:80),我使用我們的工具將消息ping到服務器並接收回來。但是服務器並沒有關閉連接,我們的工具只是一直在聆聽,當我預料到它會停止時。

我向我們的開發團隊建議,我們可能想爲客戶端添加一個設置,以便在收到X消息或Y時間後關閉連接,但他們已經質疑這是否實際。

那麼,Websocket客戶端是否應該能夠關閉連接,從開發的角度來看它是不好的做法?客戶甚至可以告訴消息是否已完成?如果客戶可以關閉連接,那麼可能需要哪種情況?

回答

1

那麼,是不是打算一個WebSocket的客戶端應該能夠關閉連接

WebSocket API包含close功能。這是爲了讓客戶端可以關閉與服務器的連接。

從發展的角度看它是不好的做法嗎? 如果客戶端可以關閉連接,那麼可能需要哪種情況?

這真的取決於應用程序。但是 - 如上所述 - 它是WebSocket API的一部分,因此完全有效。

客戶甚至可以告訴消息是否已完成?

WebSocket.onmessage在收到消息時被調用。整個消息是否已經被接收,都取決於你的應用程序的觀點。如果您的服務器一次性發送完整的消息,則很可能會收到完整的消息。你會發現在WebSocket protocol documentation

0

確切的細節取決於您的應用程序,但關閉websocket是正常運行(雙方)。

如果您收到您期望的所有數據,並且不想進一步進行通信,請關閉連接。

技術的名稱是webSOCKET,它的名稱是有原因的。它是網絡版的套接字。如果您使用常規的TCP/IP套接字,則發送槽(雙向)取決於應用程序。如果應用程序是Web服務器和瀏覽器,則數據發送槽套接字根據HTTP協議進行格式化。該協議定義了連接/套接字應該如何以及何時關閉。

同樣適用於websocket - 通過它發送什麼取決於客戶端和服務器(以及它們之間通信方式的協議 - >稱爲協議)。由於您擁有專有應用程序,因此該協議取決於誰設計/編程它,包括。約定/規則當正常關閉連接/套接字時。
但是我必須說,如果編程正確,服務器應該能夠隨時處理連接丟失......因爲在現實世界中,它可以隨時丟棄,例如有人在傳輸過程中拔掉網線。

因此,即使不是最佳實踐,您應該可以隨時關閉套接字,並且正確編程的服務器應該能夠處理它。

相關問題