1

受信したPongを対応するPingと一致させるプロトコルを実装しようとしています。

しかし、送信したのにPongを受信しなかったPingについてはどうすればよいですか?これは起こり得ますか?または、すべてのpingに対応するPongがあり、Pongを受信しない場合は、接続が失われていることを示していることが保証されていますか?WebSocketプロトコルドキュメントはこれに関して沈黙しています。

4

2 に答える 2

2

準拠するWebSocket実装は、pingを受信するとポンを返す必要があります。一般に、妥当な時間が経過してもピンポンが発生しないということは、リモートエンドポイントでネットワークエラーまたは他の何かがビジーであるか壊れていることを意味します。いくつかの注意点があります。

  • 最新のpingのみを確認する必要があります。2つのpingを送信すると、1つのポンしか返されません。
  • pingとpongはコントロールフレームです。WebSocketには、制御フレーム用の個別のチャネルはありません。データフレームが大きいと、直後のpingの受信が遅れる場合があります。実装は、制御メッセージの待ち時間を改善するためにデータメッセージを断片化する場合があります。
  • クローズフレームを受信した後は、ポンは送信されません。
于 2013-02-04T20:58:59.457 に答える
2

WebsocketはTCPプロトコルに基づいており、すべてのパケットが順番に処理され、受信データの処理を続行する前に、失われたパケットまたは破損したパケットが再送信されます。

したがって、pongが欠落している場合に考えられる唯一の説明は、接続の反対側でのping/pongプロトコルの実装のエラーです。

TCPプロトコルの信頼性とその順序は、Webブラウジング中に簡単に確認できます。インターネット接続が悪いと、進行中にWebサイトの読み込みが中断される可能性がありますが、読み込みを行う部分は常に正しい順序であり、errohEThgf%$ / GHfDw(&IjfdsAyW$§REggnfdER§$HHxM + FD5

于 2013-02-04T15:56:36.740 に答える