WebSocket 握手成功不会返回 200 状态码。HTTP 200 状态码表示的是一个成功的 HTTP 请求。而 WebSocket 握手本身是一个 HTTP 请求,但其目的是为了升级协议到 WebSocket。
成功建立 WebSocket 连接时,服务器返回的 HTTP 状态码是 101 Switching Protocols。 客户端收到这个状态码后,就知道服务器同意升级协议,后续的通信将不再使用 HTTP,而是使用 WebSocket 协议。
客户端发起 WebSocket 连接的请求头中包含 Upgrade: websocket
和 Connection: Upgrade
这两个字段,服务器同意升级协议后,会在响应头中也包含这两个字段,以及 Sec-WebSocket-Accept
字段 (根据客户端请求头中的 Sec-WebSocket-Key
计算得出)。
简而言之:
- 请求: 客户端发送一个 HTTP 请求,包含
Upgrade: websocket
和Connection: Upgrade
。 - 成功响应: 服务器返回
101 Switching Protocols
,也包含Upgrade: websocket
和Connection: Upgrade
,以及Sec-WebSocket-Accept
。 - 失败响应: 如果握手失败,服务器会返回其他的 HTTP 状态码,例如 400, 401, 403, 500 等,表示连接未能建立。
所以,看到 101 状态码,就代表 WebSocket 握手成功了。
标签:200,HTTP,Upgrade,WebSocket,握手,websocket From: https://www.cnblogs.com/ai888/p/18591850