Chromium 从 6.0.414.0 版本开始采用新的 WebSocket 协议

Posted by Eyon on June 3, 2010

被称为”TCP for the Web”的下一代 Web 应用的全双工通讯技术 WebSocket 已经成为了 Web 应用 1.0 草案标准之一, 由于使用了 Ajax 技术,WebSocket 协议相对于 HTTP 协议来说效率更高,所以更加适合于实时以及动态 Web 应用。同时 WebSocket 提供一个非常简单的 API,可以用来实现浏览器与服务器之间的双向沟通,所以开发这样的 Web 应用将会非常轻松。

![chrome4.0](http://img.chromi.org/2009/08/chrome4.0.jpg "chrome4.0") Google 最初将 WebSocket 部署在 Webkit 当中,在 [Chrome 4.0 正式版发布的时候](http://www.chromi.org/archives/2770)正式将该技术引入到 Chrome 浏览器,但最初引入的 WebSocket 是基于[draft-hixie-thewebsocketprotocol-75](http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75) 版本的,并且已经有早期的开发者尝试使用该技术在浏览器上开发应用程序,并对 WebSocket 规范提出了一些反馈。 基于社区的反馈,WebSocket 规范已经更新至 [draft-ietf-hybi-thewebsocketprotocol-00](http://www.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-00.txt)(也被称为 draft-hixie-thewebsocketprotocol-76),这个版本放松过了在握手信息方面的要求,不再依赖需要开启多个 http 连接,创建应用程序就更加方便了。另外该版本还引入了基于随机数的询问应答以防止来自跨协议的攻击。不过,这个改变也使得不能与 thewebsocketprotocol-75 规范相兼容,也就是说基于 75 规范的客户端不能与基于 76 规范的服务器端通讯,反之亦然。 开发者应该注意的是,从 WebKit nightly build r59903 以及 Chromium 6.0.414.0 (r47952) 开始,客户端于服务器端的通讯已经使用了 76 版本的 WebSocket 协议,所以说在基于 draft-hixie-thewebsocketprotocol-75 的服务器端打开 WebSocket 连接将会造成通讯失败的问题。由于 75 版本已经废弃并且不会再支持之后版本的浏览器,要想支持新的客户端你必须更新服务器端的规范版本到 76(注意 Chrome 5 用户仍然使用该协议的 75 版本)。 目前 WebSocket 协议仍然在活跃的产生变化直到达成共识,Google 将继续更新他们的实施方式以支持最新的规范草案。 Via [Chromium Blog](http://blog.chromium.org/2010/06/websocket-protocol-updated.html)