前言
WebSocket是一种在单个TCP连接上进行全双工通信的协议
1.为什么使用WebSocket
在很多情况下,服务器需要向客户端主动推送消息。一种方案是使用轮询,在特定的时间间隔内,由浏览器主动向服务器发送请求,然后服务器返回最新的数据。这种传统的模式有明显的缺点,浏览器需要不停的向服务器发送请求,每次HTTP请求又包含较长的头部,数据的更新必须要浏览器拿到返回值才能知道,这样必然会浪费很多的带宽资源,而WebSocket在建立连接后即可进行双向通信,服务器可以主动推送更新到客户端,减少了不必要的服务器资源和带宽浪费。
2.WebSocket的特点
- WebSocket的最大特点是,浏览器与服务器建立通信后,链接可以长时间保存,服务器可以主动的推送消息到浏览器,是全双工通信。
- WebSocket借助了HTTP协议来完成了一部分握手。在WebSocket通信中,通过HTTP协议的101状态码进行握手。请求头中Connection:的属性值为Upgrade,Upgrade属性值为websocket。
- 连接是有状态的,建立连接后,后续的通信可以省略很多认证信息
3.WebSocket的优点
- 较小的控制开销。在连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包头部较小
- 更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端发送数据
- 是一种有状态的连接。因为连接一旦建立后就可以保存较长时间,所以不需要每次都携带身份信息进行认证