[27] 部分プロトコルは、 WebSocket 上で利用するプロトコルを表します。
[41] WebSocket の部分プロトコルは、 WebSocket で送受信するアプリケーションプロトコルを識別するものです。
[42] 1つの WebSocket エンドポイントで複数のプロトコルを扱いたい時に、 相互の区別のために有用かもしれません。 しかしほとんどの用途では特定エンドポイントでは特定のプロトコルしか使わないでしょうから、 この機能が必要となる場面は滅多にありません。
[23] 部分プロトコル名は、字句です >>22, >>1。
[24] RFC は、,
と SP
以外のASCII印字可能文字であることを要求しつつ、ABNF
では字句と定義しています。 ABNF に従うことや従わないものを拒絶することも
(曖昧に) 求めています。結果としてどのような動作が求められているのかは不明確です。
[26] HTML Standard は、スクリプトが指定した値が
「Sec-WebSocket-Protocol:
の要件を満たさないなら」 >>25
例外を投げることを求めています。
WebSocket
インターフェイス protocol
属性[34] WebSocket
インターフェイスの
protocol
IDL属性は、
利用している部分プロトコルについて返すものです。
[35] この属性は、内部的に保持している値を返さなければなりません >>33。 値は、WebSocket接続の確立の過程で設定されます。
[20] 部分プロトコルは、サーバーとクライアントとの合意があれば好きな名前を使って構いません。
[21] しかし広い範囲で使われるものは共通の名前があると便利ということで、 部分プロトコル名を規定する仕様書も存在しています。
[5] 部分プロトコルの名前には、IANA登録簿があります >>4, >>6。
[7] 実際に色々な部分プロトコル名が登録されているようです。
[37] しかし大文字と小文字の差しかない名前を IANA に登録することはできません >>32。
[8] RFC 7118 - The WebSocket Protocol as a Transport for the Session Initiation Protocol (SIP) ( 版) <https://tools.ietf.org/html/rfc7118>
[9] 値 rfb
は RFC 6143 を出典に登録されていますが、
RFC 6143 は WebSocket に言及しておらず、どのように使うのか不明です。
[14] draft-garnero-rfb-websocket-00 - The WebSocket Protocol as a Transport for the Remote Framebuffer Protocol (RFB) ( 版) <https://tools.ietf.org/html/draft-garnero-rfb-websocket-00>
[13] draft-realvnc-websocket-02 - Use of the WebSocket Protocol as a Transport for the Remote Framebuffer Protocol ( 版) <https://tools.ietf.org/html/draft-realvnc-websocket-02>
[10] RFC 7395 - An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket ( 版) <http://tools.ietf.org/html/rfc7395>
[11] draft-pd-dispatch-msrp-websocket-08 - The WebSocket Protocol as a Transport for the Message Session Relay Protocol (MSRP) ( 版) <https://tools.ietf.org/html/draft-pd-dispatch-msrp-websocket-08>
[12] draft-ietf-bfcpbis-bfcp-websocket-04 - The WebSocket Protocol as a Transport for the Binary Floor Control Protocol (BFCP) ( 版) <https://tools.ietf.org/html/draft-ietf-bfcpbis-bfcp-websocket-04>
[15] draft-hapner-hybi-messagebroker-subprotocol-03 - The MessageBroker WebSocket Subprotocol ( 版) <https://tools.ietf.org/html/draft-hapner-hybi-messagebroker-subprotocol-03>
[16] draft-iijima-netconf-websocket-ps-04 - NETCONF over WebSocket ( 版) <https://tools.ietf.org/html/draft-iijima-netconf-websocket-ps-04>
[17] draft-chenxin-behave-turn-websocket-01 - WebSocket Protocol as a Transport for Traversal Using Relays around NAT (TURN) ( 版) <https://tools.ietf.org/html/draft-chenxin-behave-turn-websocket-01>
[18] draft-savolainen-core-coap-websockets-04 - CoAP over WebSockets ( 版) <https://tools.ietf.org/html/draft-savolainen-core-coap-websockets-04>
[30] Define the WebSocket subprotocol check as part of response validation · whatwg/fetch@08f8560 ( 版) <https://github.com/whatwg/fetch/commit/08f8560f6cecaedc1c3372f9fff1ee39c3bfc86f>
[31] Define permessage-deflate extension and cache-mode for WebSocket · whatwg/fetch@267a8ef ( 版) <https://github.com/whatwg/fetch/commit/267a8effeacfe5d641010d1d4f4609f9602cdab6>
[38] RFC 7977 - The WebSocket Protocol as a Transport for the Message Session Relay Protocol (MSRP) () <https://tools.ietf.org/html/rfc7977>