-
Notifications
You must be signed in to change notification settings - Fork 4
/
330.txt
76 lines (57 loc) · 3.28 KB
/
330.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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
* 仕様書
[REFS[
- [4] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#dom-websocket-readystate>
]REFS]
* 状態
[5] [[接続]]は、次の状態を持ちます。
[FIG(list members)[
:接続の状態:[CODE(DOMa)@en[[[readyState]]]] [[属性]]に相当する実際の接続の状態です。
:[[バッファー]]:送信待ちのデータです。
:不完全なメッセージ:断片化された[[フレーム]]の到着待ちの受信データです。
]FIG]
[10] [[クライアント]]は ([CODE(DOMi)@en[[[WebSocket]]]] [[オブジェクト]]は)、
更に次の状態を持ちます。
[FIG(list members)[
:[[クライアント指定プロトコル群]]: 構築時に指定された[[部分プロトコル]]のリストです。
:[CODE(DOMa)@en[[[url]]]]:接続先の [[URL]] です。
:[CODE(DOMa)@en[[[readyState]]]]:
:[CODE(DOMa)@en[[[extensions]]]]:
:[CODE(DOMa)@en[[[protocol]]]]:
:[CODE(DOMa)@en[[[bufferedAmount]]]]:
:[CODE(DOMa)@en[[[binaryType]]]]:
:[[flagged as full]]:
]FIG]
* [CODE(DOMi)@en[WebSocket]] インターフェイス [CODE(DOMa)@en[readyState]] 属性
[6] [CODE(DOMi)@en[[[WebSocket]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[[[readyState]]]]]] [[属性]]は、
[[WebSocket接続]]の状態を表します。
[7] [CODE(DOMi)@en[[[WebSocket]]]] [[インターフェイス]]には
4つの [CODE(IDL)@en[[[unsigned short]]]] [[型]]の[[定数]]が定義されています [SRC[>>4]]。
そのいずれかを返すことになっています。
[FIG(list)[
:[CODE(DOMc)@en[[[CONNECTING]]]] ([CODE[[[0]]]]):
[[接続]]がまだ確立されていないことを表します [SRC[>>4]]。
:[CODE(DOMc)@en[[[OPEN]]]] ([CODE[[[1]]]]):
[[接続]]が確立され通信できることを表します [SRC[>>4]]。
:[CODE(DOMc)@en[[[CLOSING]]]] ([CODE[[[2]]]]):
[[接続]]の [[closing handshake]] が進行中か
[CODE(DOMm)@en[[[close]]]] が呼び出されたことを表します [SRC[>>4]]。
:[CODE(DOMc)@en[[[CLOSED]]]] ([CODE[[[3]]]]):
[[接続]]が閉じられたか開けなかったことを表します [SRC[>>4]]。
]FIG]
[9] これらの[[属性値]]の変更は、[[WebSocket接続の確立]]や
[[WebSocket接続を閉じる]]の処理の中で行われます。
[8] これらの定数は [[HTML Standard]] で規定されています。
[[RFC 6455]] でも定数名は言及されていますが、それが何であるかは全く説明がありません。
[11] [[WebSocket]] と[[スクリプト]] ([[イベントループ]]) は別個に動作します。
[[WebSocket接続]]の状態としてプロトコル側が保持している値と
[CODE(DOMa)@en[[[readyState]]]] 属性値は、更新されるタイミングが異なることがあります。
[12] [[[CODE(DOMi)@en[WebSocket]]のごみ収集]]は、[[event loop step 1]]
時点での [CODE(DOMi)@en[[[readyState]]]] の状態によって処理します。
;; [13] [[event loop step 1]] 開始前に[[ごみ収集]]可能か検査しても良いとも解釈できます。
* 接続の確立
[1] [[WebSocket接続の確立]]を参照。
* データの送受信
[3] [[WebSocketソケット]]、[[データソケット]]を参照。
* 接続の切断
[2] [[WebSocket接続を閉じる]]を参照。