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 帧
posted @ 2025-07-31 22:36  Charlie-Pang  阅读(19)  评论(0)    收藏  举报