[2] opcode
は、 0x9
です >>1。
Pingフレームは、制御フレームです。
[3] 応用データを含めて構いません >>1。 応用データは特に規定がなく、任意のバイト列で良いようです。 ただし制御フレームの長さ制限から、125バイト以下でなければなりません。
[5] WebSocket接続の確立の後、任意の時機に送信できます >>1。
[8] 利用者エージェントは、必要に応じて (NAT に接続を保持させるため、 接続の切断を検出するためなどの目的で) Pingフレームを送信して構いません >>7。 しかしサーバーを助ける目的で送信してはなりません >>7。
[16] Chrome も Firefox も、(少なくても数時間以内には) PingフレームやPongフレームを自発的に送信することはないようです。
[4] Pingフレームを受信したら、既に Close
フレームを受信した場合を除き、
Pong
フレームを送信しなければなりません。
これはできるだけすぐに送信するべきです。 >>1
応用データを返送しなければなりません。
複数受信した場合は、最後のものにのみ返信することとしても構いません。
[11] Chrome も Firefox も、すべてに順に返信しているように見えます。
[21] Webブラウザーの WebSocket
API は Pingフレームや
Pongフレームを扱う手段を一切提供していません。 JavaScript
側で扱うべきものではなく、プロトコルの内部処理に過ぎないと考えられています。
[22] Webサーバー側の API や、Webブラウザー以外のクライアントの API は、 Pingフレームや Pongフレームを扱う手段を提供できます。 しかしアプリケーションのデータはすべてテキストフレームやバイナリーフレームで送受信するべきで、 PingフレームやPongフレームがアプリケーションの処理に影響するべきではありません。
[12] 855906 – Set pingInterval on websocket ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=855906
[13] 849364 – Provide per-websocket way to enable keepalive pings ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=849364
[14] 894879 – SimplePush: Adaptive ping for WebSocket ( 版) https://bugzilla.mozilla.org/show_bug.cgi?id=894879
[15] 13104 – Enable keepalive on WebSocket API ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=13104
[23] 机「9」文字事件 - Wikipedia () https://ja.wikipedia.org/wiki/%E6%9C%BA%E3%80%8C9%E3%80%8D%E6%96%87%E5%AD%97%E4%BA%8B%E4%BB%B6