websocket建立连接过程
时间: 2025-05-03 12:50:47 浏览: 18
### WebSocket 连接建立流程详解
#### TCP 三次握手
在 WebSocket 建立连接之前,客户端和服务器之间首先需要完成 TCP 的三次握手。这一过程确保双方可以可靠地交换数据[^3]。
```plaintext
Client: SYN -> Server
Server: SYN-ACK -> Client
Client: ACK -> Server
```
#### 发送 HTTP 升级请求
一旦建立了可靠的 TCP 连接,客户端会向服务器发起一个特殊的 HTTP 请求,用于请求将现有连接升级至 WebSocket 协议。此请求包含若干特定头部字段:
- `Upgrade`: 表明希望使用的协议名称(通常是 "websocket")
- `Connection`: 设置为 "Upgrade"
- `Sec-WebSocket-Key`: 随机生成的一串 Base64 编码字符串
- 可选的其他安全性和扩展相关参数
```http
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Version: 13
```
#### 接收并解析响应
当服务器接收到上述请求后,会对其中的信息进行验证,并决定是否允许此次升级操作。如果一切正常,则返回一条带有状态码 101 (Switching Protocols) 的响应给客户端,表明即将切换到新的通信模式——即 WebSocket 模式。该响应同样携带了一些必要的头部信息作为回应:
- `Upgrade` 和 `Connection` 字段应与客户端发出的内容相匹配;
- `Sec-WebSocket-Accept` 是基于客户端提供的 Sec-WebSocket-Key 计算得出的结果;
```http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
```
此时,整个 WebSocket 握手过程结束,双方便可通过这条新建立起来的持久化通道自由传递消息了。
阅读全文
相关推荐




















