websocket
单工:只能是发送方给接收方发送数据。
半双工:半双工是双向的,但是同一时刻,发送方和接收方可以交替发送和接收数据,但是不能同时进行。
全双工:双方可以同时给对方发送数据。
websocket建立过程:
1、客户端发起带升级头的HTTP GET请求。
- 客户端通过普通 HTTP 请求启动,关键是 Upgrade 和 Connection 头
GET /ws/chat HTTP/1.1
Host: example.com
Upgrade: websocket #请求升级协议为 WebSocket
Connection: Upgrade #说明希望升级连接
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== #客户端随机生成的 base64 值,用于后续校验
Sec-WebSocket-Version: 13 #WebSocket 协议版本(当前通用为 13)
Origin: http://example.com
2、服务端校验后响应升级。
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= #服务端根据客户端的 key 计算出的返回值(通过 SHA1 + base64)
3、连接正式升级为websocket通信通道。
4、双方进入全双工通信。
通信内容以帧(Frame)形式发送,包括:
- 文本帧(Text)
- 二进制帧(Binary)
- Ping/Pong 心跳帧
- Close 帧

浙公网安备 33010602011771号