Websocket比http更稳定高效
为什么说Websocket(以下简称ws)比http更加稳定高效?
因为http是单向连接,服务器无法主动返回信息给客户端。
当你对某个api频繁调用时,如果后端服务器不够强大,很可能出现响应时间过长甚至无法响应的问题(例如,我对某个api调用达到了100ms甚至50ms级别时,很可能就会出现这种情况。注:客户端与后端服务器均在同一机器上运行,可忽略外部网络因素问题)
主要是上面这种情况中,使用的是http协议,http协议每次请求都会重新建立连接(当然,也可通过请求的头部信息尝试建立长连接,但是仅仅是延缓问题的发生而已)
但是,如果我们使用ws协议呢,ws协议首先会握手,然后建立一个tcp连接,并保持这个连接(除非主动或因意外才会断开连接)。因此,我们可以看出来,ws相比http节约了多次握手的时间,因此其响应时间可以更短。
简单的用一个图来表示如下(图片源自网络)
总结
简单点说,ws仅需一个tcp连接,http则是有多少次请求就有多少个连接,并且每次都要握手,因此,在频繁的请求中,推荐使用ws进行连接
还有一种情况,当服务器需要主动联系客户端时,也要采用ws(准确说是只能,当然,也可以使用心跳等方法)