深入浅出FE(十二)浅析websocket
目录 一、为什么要有websocket? 二、关于websocket 三、websocket的请求响应过程 四、为什么WebSocket连接可以实现全双工通信而HTTP连接不行呢? 五、WebSocket 的用法 六、服务端的实现 七、websocket的踩坑 一、为什么要有websocket? websocket的出现是为了弥补http协议服务端无法向客户端主动推送消息。所以以前实现这种场景都是通过用轮询或者Comet。轮询是指浏览器通过JavaScript启动一个定时器,然后以固定的间隔给服务器发请求,询问服务器有没有新消息。这个机制的缺点一是实时性不够,二是频繁的请求会给服务器带来极大的压力。 Comet本质上也是轮询,但是在没有消息的情况下,服务器先拖一段时间,等到有消息了再回复。这个机制暂时地解决了实时性问题,但是它带来了新的问题:以多线程模式运行的服务器会让大部分线程大部分时间都处于挂起状态,极大地浪费服务器资源。另外,一个HTTP连接在长时间没有数据传输的情况下,链路上的任何一个网关都可能关闭这个连接,而网关是我们不可控的,这就要求Comet连接必须定期发一些ping数据表示连接“正常工作”。 二、关于websocket WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持。 它的最大特点就是,服务器可以主动向客户端推送信息