目录
"WebSocket"是一种基于TCP的轻量级网络通信协议,在地位上与HTTP“平级”的
why
"WebSocket"与HTTP/2一样,都是为了解决HTTP某方面的缺陷而诞生的。
-
HTTP/2针对的是“队头阻塞”
-
WebSocket针对的是“请求-应答”的通信模式
请求-应答的缺点
“请求-应答”是一种“半双工”的通信模式,虽然可以双向收发数据,但同一时刻只能一个方向上有动作,传输效率低。而且,它是一种“被动”通信模式,服务器只能“被动”的响应客户端的请求,无法主动向客户端发送数据。
虽然HTTP/2、HTTP/3新增了Stream、Server Push等特性,但“请求-应答”依然是主要的工作方式。这就导致了HTTP难以应用在动态页面、即时消息、网络游戏等要求“实时通信”的领域
在WebSocket出现之前,在浏览器环境里用JavaScript实时开发Web应用很麻烦。因为浏览器是一个“受限的沙盒”,不能用TCP,只有HTTP协议可用,所以就出现了很多“变通”的技术,“轮询(polling)”就是比较常用的一种。
简单地说,轮询就是不听地向服务器发送HTTP请求,问有没有数据,有数据的话服务器就响应报文回应。如果轮询地频率比较高,那么就可以近似的实