Google Chrome现时支持Web Sockets了

Google Chrome现在支持Web Sockets了Web Sockets Now Available In Google Chrome从Chrome 4.0.249.0开始

Google Chrome现在支持Web Sockets了
Web Sockets Now Available In Google Chrome
从Chrome 4.0.249.0开始支持Web Sockets,而且缺省设置为开启。Web Socket是Web上的TCP,为Web应用提供双向通信的下一代技术,是Web Applications 1.0标准的一部分。

Web Sockets要比现在广泛使用的XMLHttpRequest简单,通过XHR进行双向通信需要一些特别的技巧(例如长连接,轮询等),而Web Sockets为浏览器提供了真正的双向通信通道。一旦得到一个Web Socket连接,调用 send()方法就可以直接从浏览器发送数据到服务器,同时浏览器通过一个onmessage事件处理函数接收从服务器传来的数据。一个简单的例子:

if ("WebSocket" in window) {    var ws = new WebSocket("ws://example.com/service");    ws.onopen = function() {      // Web Socket is connected. You can send data by send() method.      ws.send("message to send"); ....    };    ws.onmessage = function (evt) { var received_msg = evt.data; ... };    ws.onclose = function() { // websocket is closed. };} else {    // the browser doesn't support WebSocket.}


除了新的Web Socket API,浏览器使用新的web socket协议与服务器通信,该协议不是原始的TCP(因为它需要提供与浏览器来源相同的安全模型),也不是HTTP(因为它不同于HTTP的请求-响应模型)。与XHR不同的还有,该协议使用更少的带宽,(与HTTP相比,一旦连接建立,不需要再有消息头数据的交换)

要使用Web Socket(包括新的API,新的协议,更简单的编程模型,更高效的网络通信),我们还需要一个新的服务器实现,已有pywebsocket提供支持了,它能作为Apache扩展模块使用,也可以作为一个独立的服务器运行。

现在,至少可以通过Google Chrome和pywebsocket开始基于Web Socket的Web应用开发了。

不过Web Socket的协议还没有完全定稿,在IETF上仍在讨论。

Flash也实现了WebSockets的支持,因此实际上IE上也能使用,尽管是非原生支持。这里有个项目使其它浏览器通过Flash实现Web Socket的支持