1

WebSocket pingフレームには、それを ping フレームとして識別するオペコードに加えて、アプリケーション データが含まれる場合と含まれない場合があります。

私が理解している限り、ping/pong の目的は TCP 接続のタイムアウトを防ぐことです。フレームには、接続がまだ使用されていることを示すために必要な頻度で送信される、可能な限り小さいダミー データ (つまり、オペコード) が含まれます。

それ以上のことはありますか?ping フレームでアプリケーション データを送信しなかった場合、何かを逃すことになりますか? たとえば、ping を送信してから対応する pong を受信するまでの時間によって接続品質を判断するために、ping と pong の間の対応を確立するために ping でトークンを送信した場合、ping/pong を悪用することになりますか?

4

1 に答える 1

2

Ping および Pong フレームは、ping で送信された場合に対応する pong によって返されるペイロードを許可します。それらがアプリケーション データに役立たない理由はいくつかあります。

  • ペイロードはバイナリのみで、125 バイトに制限されています。
  • すべての ping に個別に応答するのではなく、最新の ping にのみ応答することは合法です。
  • 多くの WebSocket インターフェース (特にブラウザーによって JavaScript に提供されるものを含む) は、ping と pong をアプリケーションに公開しません。

とはいえ、RFC6455 に準拠するすべての WebSocket 実装は、アプリケーションに通知しない場合や、アプリケーションが独自の送信を許可しない場合でも、ping に応答します。これにより、ping/pong とそのペイロードの使用が、キープアライブ メッセージやその他のネットワーク レベルの統計や簿記に完全に適したものになります。

于 2013-06-25T14:44:10.657 に答える