/
323.txt
40 lines (26 loc) · 1.8 KB
/
323.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
* 仕様書
[REFS[
- [1] '''[CITE@en[RFC 6455 - The WebSocket Protocol]] ([TIME[2015-03-11 20:42:50 +09:00]] 版) <http://tools.ietf.org/html/rfc6455#section-5.5.2>'''
- [7] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#ping-and-pong-frames>
]REFS]
* 構文
[2] [CODE[[[opcode]]]] は、 [CODE[[[0x9]]]] です [SRC[>>1]]。
[[Pingフレーム]]は、[[制御フレーム]]です。
[3] [[応用データ]]を含めて構いません [SRC[>>1]]。
* 文脈
[5] [[WebSocket接続の確立]]の後、任意の時機に送信できます [SRC[>>1]]。
;; [6] [[keepalive]] としても、相手がまだ反応するか検証する手段としても使えます [SRC[>>1]]。
[8] [[利用者エージェント]]は、必要に応じて ([[NAT]] に[[接続]]を保持させるため、
[[接続]]の切断を検出するためなどの目的で) [[Pingフレーム]]を送信して構いません [SRC[>>7]]。
しかし[[サーバー]]を助ける目的で送信しては[['''なりません''']] [SRC[>>7]]。
;; [[サーバー]]は必要があるなら自身で適宜送信するべきです。
;; [9] これは [[fingerprinting vector]] かもしれません。
* 処理
[4] [[Pingフレーム]]を受信したら、既に [[[CODE[Close]]フレーム]]を受信した場合を除き、
[[[CODE[Pong]]フレーム]]を送信しなければ[['''なりません''']]。
これはできるだけすぐに送信する[['''べきです''']]。 [SRC[>>1]]
[[応用データ]]を返送しなければなりません。
複数受信した場合は、最後のものにのみ返信することとしても構いません。
* 関連
[10] [[HTTP/2]] では [CODE[[[PING]]]] [[フレーム]] ([CODE[[[ACK]]]] 未設定)
に相当します。