HTTP1.1 和 HTTP2 服务器在响应 WebSocket 升级时有什么不同
注意:以下内容均为 deepseek 产出。
HTTP/1.1 和 HTTP/2 在响应 WebSocket 升级时的主要区别如下:
HTTP/1.1
-
升级机制:
-
客户端发送 Upgrade: websocket 和 Connection: Upgrade 头字段的 HTTP/1.1 请求。
-
服务器响应状态码 101 Switching Protocols,并包含相同的头字段,完成协议升级。
-
-
请求示例:
GET /chat HTTP/1.1 Host: example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13
-
响应示例:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
HTTP/2
-
不支持直接升级:
- HTTP/2 不支持通过 Upgrade 机制升级到 WebSocket,因为其设计基于二进制帧,与 HTTP/1.1 的文本协议不同。
-
扩展协议:
-
使用 CONNECT 方法建立隧道,通过 :protocol 伪头字段指定 WebSocket 协议。
-
客户端发送 CONNECT 请求,服务器响应 200 OK 后,双方在隧道内进行 WebSocket 通信。
-
-
请求示例:
:method: CONNECT :protocol: websocket :scheme: https :path: /chat :authority: example.com sec-websocket-key: dGhlIHNhbXBsZSBub25jZQ== sec-websocket-version: 13
-
响应示例:
:status: 200 sec-websocket-accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=