2011-07-21 6 views
3

ウェブソケットを使用しているときに、メッセージが失われていることに気付きました。私はモバイルサファリ(クライアント)とc#(サーバー)の間で通信しようとしています。私はサーバとしてsuperWebSocket(opensource)を使用していますので、サーバのバグかもしれません。Websockets message loss

しかし、メッセージは、接続が輻輳しているときにのみ(メッセージをたくさん送信すると)ドロップされます。これは私にUDPの "reaks"ですが、私はどこかでWebソケットがTCPであることを覚えています。

私はjavascriptで "send"コマンドを発行する可能性があり、受信側はメッセージを受け取れませんか?

+1

実際にWebSocketはTCPです。これはブラウザの問題またはサーバのバグかもしれませんが、UDPではありません。 – Raynos

+0

あなたの問題はブラウザのバグではないかもしれません。 tcp接続が中断/リセットされた場合、TCPは 'lost 'メッセージを出力します。プロトコル内のピアからackを受信すると、ピアにメッセージが表示されます。そして、サーバーの最初のメッセージがwebsocketで失われる可能性がありますこの感情を悪化させる:https://stackoverflow.com/a/47435420/1586797 –

答えて

8

私は、トラフィックの多いアプリケーションや単一の紛失したメッセージ(どちらの方向でも)が致命的である状況で広範囲にわたってWebSocketを使用してきました。私は今までどんなメッセージも見失わなかった。しかし、私は、同じ問題について投稿や質問をどこかに見ていることを思い出して、その人はサーバー用にsuperWebSocketも使用していました。だから私の強い疑念は、superWebSocketにバグがあることです。

モバイル以外のブラウザを使用している場合も同じ問題がありますか? iOSブラウザ(モバイルSafariの意味するものだと思います)にWebSocketのバグがあります。私はWebSocketでそのブラウザを広範囲にテストしていません。 Linux、Windows、WindowsのSafariでChrome、Firefox(WebSocket対応)、Opera(WebSocket対応)を幅広くテストしました。

Javascriptでの送信が、接続に失敗した場合を除いてサーバーに到達できないことはありません。それが起こっているなら、どこかにバグがあります。

+0

この質問は非常に古いです。ほとんどのモバイルブラウザがWebソケットを実装していない古い(obselete)WebsocketsサーバーとiOs(3または4)を指します。私は再び問題に遭遇したことはありません。 – eshalev