WebSocket 是不是与 HTTP/3 兼容

Posted

技术标签:

【中文标题】WebSocket 是不是与 HTTP/3 兼容【英文标题】:Is WebSocket compatible with HTTP/3WebSocket 是否与 HTTP/3 兼容 【发布时间】:2019-08-06 14:20:38 【问题描述】:

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

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

【问题讨论】:

当前的 WebSocket 协议需要 TCP,但没有什么能阻止实现在传输层包含对 QUIC 的支持。不过,也有人提议让 WebSocket 协议适应 QUIC/HTTP3。 我认为一种新方法正在接管:替代 WebSockets 和 WebRTC,它可以通过 quic 可选地支持可靠流和不可靠数据报:wicg.github.io/web-transport 现在我认为你最好使用 SSE ( EventSource) 用于基于 QUIC 的服务器发送事件 【参考方案1】:

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

一旦与服务器建立连接(包括 通过代理或通过 TLS 加密的隧道进行连接),客户端 必须向服务器发送打开握手。握手包括 HTTP 升级请求,以及所需的列表和 可选的标题字段。此握手的要求如下 跟随。

    握手必须是一个有效的 HTTP 请求,由 [RFC2616]。

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

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

【讨论】:

对于 HTTP/2,这个答案有点过时了,请参阅:tools.ietf.org/html/rfc8441

以上是关于WebSocket 是不是与 HTTP/3 兼容的主要内容,如果未能解决你的问题,请参考以下文章

Websocket vs Ajax vs Cometd

Websocket原理

(5)WebSocket 与 HTTP

具有 IOS 客户端兼容性的 Websocket 服务器

websocket 升级是不是仍然允许 http ajax 请求?

WebSocket协议-原理篇