1)客户端发起 WebSocket 握手请求:客户端通过 HTTP 请求发起 WebSocket 握手,请求头中包含以下字段:

1)Upgrade: websocket:表明客户端希望升级到 WebSocket 协议;
2)Connection: Upgrade:表明客户端希望升级连接;
3)Sec-WebSocket-Key:随机生成的 Base64 编码字符串,用于握手验证。
示例请求头:
GET /ws-endpoint HTTP/1.1

Host: example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

Sec-WebSocket-Version: 13

2)服务器返回 WebSocket 握手响应:

服务器验证客户端的握手请求,并返回 HTTP 101 状态码(Switching Protocols),表示协议升级成功。

响应头中包含以下字段:

1)Upgrade: websocket:确认协议升级;
2)Connection: Upgrade:确认连接升级;
3)Sec-WebSocket-Accept:基于客户端的 Sec-WebSocket-Key 计算的值,用于验证握手。
示例响应头:
HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

3)WebSocket 连接建立:

1)握手成功后,HTTP 连接升级为 WebSocket 连接,客户端和服务器可以通过 WebSocket 协议进行双向通信;
2)连接基于 TCP,支持全双工通信。
4)数据传输:

1)客户端和服务器通过 WebSocket 协议发送和接收数据帧(Frame)。数据帧可以是文本或二进制格式;
2)文本帧:用于传输 JSON、字符串等文本数据;
{"message": "Hello"}
3)二进制帧:用于传输图片、音频、视频等二进制数据。
[0x01, 0x02, 0x03]

5)连接关闭:

1)客户端或服务器可以主动发送关闭帧(Close Frame)来终止连接;
2)关闭帧包含关闭状态码和原因(可选);
3)示例关闭帧。
Close Frame:

Code: 1000 (Normal Closure)
Reason: "Connection closed by client"


已注销
1 声望1 粉丝