20-Websocket和Socket.IO
7.5 Websocket和Socket.IO
Web socket 是一项令人激动的技术,得到了浏览器的普遍支持。Web socket 允许客户端和服务器保持持久、轻量和双向的通信信道,而不是单一的TCP连接。这让客户端或者服务器能够实时地推送消息,没有HTTP“请求-响应”周期的开销和延时。在Web socket 技术出现之前,开发人员采取替代的(但效率较低)技术来提供类似的功能。这些技术包括使用Flash socket;长轮询(long-pulling),浏览器向服务器发送请求,然后当响应返回或者请求超时的时候,又重新发起请求;以及以很小的时间间隔(比如,每隔一秒)轮询服务器。
Web socket 的问题是规范还没有最终定下来,旧浏览器也永远不会支持这个功能。Socket.IO是一个Node.js模块,它优雅地解决了对旧浏览器的顾虑,因为它提供了浏览器到服务器的消息传输功能,如果可以使用Web socket 就使用,否则就会降级使用其他的技术。