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事件处理函数接收从服务器传来的数据。一个简单的例子:?
?
Javascript代码?
?
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. ??
} ??
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的支持
?
?
?
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ago52030/archive/2009/12/12/4992363.aspx