2011-07-21 194 views
3

當使用websockets時,我注意到一些消息丟失。我正嘗試在移動Safari(客戶端)和C#(服務器)之間進行通信。我使用superWebSocket(opensource)作爲服務器,所以它可能是一個服務器bug ...Websockets消息丟失

但是,只有當連接擁塞(當我發送大量消息時)纔會丟棄消息。這對我來說「UDP」,但我記得在某個地方閱讀web-sockets是TCP。

是否有任何場合我可能會在javascript中發送「發送」命令,並且接收方不會收到消息?

+1

WebSockets確實是TCP。這可能是瀏覽器問題或服務器錯誤,但它不是UDP。 – Raynos

+0

您的問題可能不是瀏覽器中的錯誤。它可能只是您需要處理的「正常」網絡問題。 TCP可以'丟失'消息,如果tcp連接斷開/重置。你只能知道對方看到的消息,因爲你從協議中的對等方收到確認。而服務器的第一條消息可能會丟失websocket使這種感覺變得更糟:https://stackoverflow.com/a/47435420/1586797 –

回答

8

我一直在高流量的應用程序和單個丟失的消息(在任何方向)是致命的情況下廣泛使用WebSockets。我從來沒有見過任何消息丟失。不過,我確實記得在某處發佈了關於同一問題的帖子或問題,並且該人員還在使用superWebSocket作爲服務器。所以我強烈的懷疑是在superWebSocket中有一個錯誤。

如果您使用非移動瀏覽器,您是否看到相同的問題?這是可能的iOS瀏覽器(我認爲這就是你的意思是移動Safari)有一個WebSocket的錯誤。我還沒有廣泛地使用WebSockets測試該瀏覽器。我已經在Linux和Windows上以及Windows上對Safari進行了廣泛的測試,包括Chrome,Firefox(啓用了WebSocket)和Opera(啓用了WebSocket)。

除非整個連接失敗,否則不允許使用Javascript發送到服務器。如果發生這種情況,那麼在某個地方有一個錯誤。

+0

這個問題是非常古老的。它指的是一箇舊的(obselete)websockets服務器和iOs(3或4),當大多數移動瀏覽器沒有實現websocket開始。我再也沒遇到過這個問題。 – eshalev