3. WebSockets Upgrade over HTTP/3 (通过HTTP/3升级WebSocket)
[RFC8441] 定义了一种在HTTP/2连接的单个流上运行WebSocket协议 (WebSocket Protocol) [RFC6455] 的机制. 它定义了一个扩展的CONNECT方法 (Extended CONNECT method), 该方法指定了一个新的 ":protocol" 伪头部字段 (pseudo-header field), 以及 ":path" 和 ":authority" 伪头部字段的新语义. 它还定义了一个新的HTTP/2设置 (setting), 由服务器发送以允许客户端使用扩展的CONNECT.
伪头部字段和设置的语义与 [RFC8441] 中定义的HTTP/2中的语义相同. [HTTP/3] 的附录A.3要求HTTP/3设置必须单独为HTTP/3注册. SETTINGS_ENABLE_CONNECT_PROTOCOL值为0x08 (十进制8), 与HTTP/2中相同.
如果服务器宣布支持扩展的CONNECT, 但收到一个 ":protocol" 值未知或不受支持的扩展CONNECT请求, 则服务器应该 (SHOULD) 以501 (Not Implemented) 状态码 ([HTTP] 的第15.6.2节) 响应该请求. 服务器可以 (MAY) 通过 "问题详情" (problem details) 响应 [RFC7807] 提供更多信息.
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节).