websocket握手成功会返回一个干什么状态吗?是200吗?

WebSocket 握手成功不会返回 200 状态码。HTTP 200 状态码表示的是一个成功的 HTTP 请求。而 WebSocket 握手本身是一个 HTTP 请求,但其目的是为了升级协议到 WebSocket。

成功建立 WebSocket 连接时,服务器返回的 HTTP 状态码是 101 Switching Protocols。 客户端收到这个状态码后,就知道服务器同意升级协议,后续的通信将不再使用 HTTP,而是使用 WebSocket 协议。

客户端发起 WebSocket 连接的请求头中包含 Upgrade: websocketConnection: Upgrade 这两个字段,服务器同意升级协议后,会在响应头中也包含这两个字段,以及 Sec-WebSocket-Accept 字段 (根据客户端请求头中的 Sec-WebSocket-Key 计算得出)。

简而言之:

  • 请求: 客户端发送一个 HTTP 请求,包含 Upgrade: websocketConnection: Upgrade
  • 成功响应: 服务器返回 101 Switching Protocols,也包含 Upgrade: websocketConnection: Upgrade,以及 Sec-WebSocket-Accept
  • 失败响应: 如果握手失败,服务器会返回其他的 HTTP 状态码,例如 400, 401, 403, 500 等,表示连接未能建立。

所以,看到 101 状态码,就代表 WebSocket 握手成功了。

posted @ 2024-12-07 10:08  王铁柱6  阅读(410)  评论(0)    收藏  举报