3. WebSockets Upgrade over HTTP/3 (HTTP/3上のWebSocketアップグレード)
[RFC8441] は、HTTP/2接続の単一ストリーム上でWebSocketプロトコル (WebSocket Protocol) [RFC6455] を実行するメカニズムを定義しています。これは、新しい「:protocol」疑似ヘッダーフィールド (pseudo-header field) を指定し、「:path」および「:authority」疑似ヘッダーフィールドに新しいセマンティクスを与える拡張CONNECT方法 (Extended CONNECT method) を定義しています。また、クライアントが拡張CONNECTを使用できるようにするために、サーバーが送信する新しいHTTP/2設定 (setting) も定義しています。
疑似ヘッダーフィールドと設定のセマンティクスは、[RFC8441] で定義されているHTTP/2のものと同一です。[HTTP/3] の附属書A.3は、HTTP/3設定をHTTP/3用に個別に登録する必要があることを要求しています。SETTINGS_ENABLE_CONNECT_PROTOCOLの値は0x08 (10進数で8) であり、HTTP/2と同じです。
サーバーが拡張CONNECTのサポートを通知したにもかかわらず、未知またはサポートされていない「:protocol」値を持つ拡張CONNECT要求を受信した場合、サーバーは501 (Not Implemented) ステータスコード ([HTTP] のセクション15.6.2) でその要求に応答すべきです (SHOULD)。サーバーは「問題詳細 (problem details)」レスポンス [RFC7807] を介してより多くの情報を提供してもよい (MAY) です。
HTTP/3ストリームクロージャ (stream closure) も、[RFC6455] のTCP接続クロージャに類似しています。順序正しいTCPレベルのクロージャは、ストリーム上のFINビット ([HTTP/3] のセクション4.4) として表現されます。RST例外は、H3_REQUEST_CANCELLEDタイプのストリームエラー (stream error) ([HTTP/3] のセクション8) ([HTTP/3] のセクション8.1) で表現されます。