從Chrome 4.0.249.0開始支持Web Sockets,而且缺省設置為開啟。Web Socket是Web上的TCP,為Web應用提供雙向通信的下一代技術,的一部分。 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,浏覽器使用與服務器通信,該協議不是原始的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的支持