深入WebSocket协议

无论是 HTTP 还是 HTTPS协议,它们一出场就已经定死了只能是短连接,而诸如基于 Jquery 或 Ajax 靠定时器轮询的请求来实现长连接的方法却会加大服务端的资源消耗,只能是旁门左道。即便服务端有 HTTP Keepalive 这种连接复用,仍旧无法避免一段空闲时间后就断开连接的尴尬,尤其是中间还有不可预知的网关也可能会关闭这个连接,并且服务端一旦配置不当,TCP长连接在服务端未能及时释放造成资源消耗加剧,就会出现类似雪崩效应。 并且基于短连接,HTTP/HTTPS 协议就产生了一个巨大缺陷,即请回只能由客户端发起,服务端只能做回应,不能做主动推送,因为服务端不知道客户端何时会将连接关闭(TCP是双工的,而各个浏览器的实现也不一样)。 因此就急需一种能够让浏览器支持并兼任HTTP/HTTPS协议的TCP长连接。 时代造就英雄,这种环境下便有了WebSocket。 WebSocket 协议在2008年诞生,由谷歌提出(话说Ajax也是谷歌提出的),是 HTML5 种的一个协议规范,2011 年成为国际互联网标准规范 RFC 6455,跟随着 HTML5 的步伐一同面世,主流浏览器早已全部支持了。 WebSocket 的优点有: 底层基于 TCP 实现的长连接协议,双工的性质使得服务端能主动推送信息 同样可以使用 80 和 443 端口,协议转换通过 HTTP/HTTPS … “深入WebSocket协议”

Read More