Websocket 协议

  • Http 协议是单向传输协议,只能由客户端主动发送消息给服务端。而在我们的聊天室中,一个用户发送消息后, 聊天室其他用户会收到消息通知。如果用 Http 协议去实现的话, 由于 Http 协议是单向传输的, 所以每个客户端需要定时向后端请求, 看有没有人给他发消息。这样做的缺点是非常消耗资源, 每次要经过三次握手和四次挥手而且收到消息的及时性跟请求的频率有关。
  • 我们需要一种协议, 它支持双向传输并且是长连接,符合条件的有几种, 为什么要选择 Websocket 协议呢? 因为 Web 端的话目前就 Websocket 协议支持。
  • 建立 Websocket 时,客户端向服务端发请一个 Http 请求, 头部信息里附加了"Upgrade: websocket", (如下图) 表明这是一个申请协议升级的 Http 请求。连接建立后, 双方可以自由通讯, 直到有一方断开连接。

img