WebSocket 是否与 HTTP/3 兼容

Ben*_*uch 8 http websocket http3

即将到来的 HTTP/3 标准不再基于 TCP,而是基于 QUIC 协议。WebSocket 基于 TCP 并作为 HTTP 更新启动。

是否基于 QUIC 而不是 TCP 作为 HTTP/3 更新启动的 WebSocket 连接?或者无法将 HTTP/3 连接更新为 WebSocket 连接?

小智 21

更新:2023 年:截至撰写本文时,有一个相对较新的规范 RFC9220 用于构建在 HTTP3 之上的 Websocket https://datatracker.ietf.org/doc/rfc9220/

  • 请注意,RFC 9220 是一个规范,因此无助于回答以下问题:网络浏览器 X/Y/Z(或库 A/B/C,或操作系统 D/E/F)是否支持此功能?

由于这是“http3 websockets”的顶部搜索结果,因此我希望保持最新的答案。

截至 2021 年 12 月,IETF 草案修订了RFC8441(使用 HTTP/2 引导 WebSocket),并对 HTTP/3 进行了必要的调整。如果草案接受,将有一种通过 HTTP/3 启动 WebSocket 的标准化方法。

该草案正在进行第二次修改,如无进一步修改且不被接受的,将于2022年7月到期。

  • 现在转向 RFC9220 (7认同)

gob*_*was 5

目前RFC6455仅支持 HTTP/1.1用于连接升级。

一旦建立到服务器的
连接(包括通过代理或通过 TLS 加密隧道的连接),客户端
必须向服务器发送打开握手。握手包含一个 HTTP 升级请求,以及一系列必需和
可选的标头字段。本次握手的要求
如下。

  1. 握手必须是 [RFC2616] 指定的有效 HTTP 请求。

  2. 请求的方法必须是 GET,并且 HTTP 版本必须至少为 1.1。

但是,有人提议支持 HTTP/2 和 HTTP/3(正如 Remy Lebeau 在上面的评论中提到的)。

  • 对于 HTTP/2,这个答案有点过时,请参阅:https://tools.ietf.org/html/rfc8441 (3认同)