WebSocket 是否与 HTTP/3 兼容

Is WebSocket compatible with HTTP/3

即将推出的HTTP/3标准不再基于TCP,而是基于QUIC协议。 WebSocket基于TCP,作为HTTP更新发起。

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

目前只有 HTTP/1.1 被 RFC6455 支持用于连接升级。

Once a connection to the server has been established (including a
connection via a proxy or over a TLS-encrypted tunnel), the client
MUST send an opening handshake to the server. The handshake consists of an HTTP Upgrade request, along with a list of required and
optional header fields. The requirements for this handshake are as
follows.

  1. The handshake MUST be a valid HTTP request as specified by [RFC2616].

  2. The method of the request MUST be GET, and the HTTP version MUST be at least 1.1.

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

由于这是“http3 websockets”的最高搜索结果,我想保留答案 up-to-date。

截至 2021 年 12 月,现在有一个 IETF draft that amends RFC8441(使用 HTTP/2 引导 WebSockets),其中包含 HTTP/3 所需的调整。如果草案 接受,将有一个标准化的方式来启动 WebSockets HTTP/3。

草案正在第二次修改中,如果没有进一步修改,将在 2022 年 7 月到期,届时将不被接受。