WebSocket和node.js

來源:互聯網
上載者:User

       web技術這些日子的發展可謂是有變革性的發展,已不僅局限於web2.0的ajax非同步重新整理的層面了。個人認為HTML5後真正能夠帶來變革性意義的技術主要在於WebGL、本地操作的支援,然而web發展不僅僅存在與用戶端,服務端技術也發生著變革,Websocket和node.js就是其中的代表,web服務的即時性和非同步性帶了的革命不亞於用戶端的革命。

        一般的web模型都是基於get和post的,所有的動作的發起點只有web頁面。

        如果需要伺服器主動推送資料給用戶端怎麼辦呢?有兩種方法一種是用戶端輪詢,另一種是長串連。

       用戶端輪詢在ajax普遍使用之前都是頻刷頁面來實現,效能和使用者體驗自然差很多,好在ajax出現後js非同步響應,但是用戶端需要有專門的定時事件去抓取服務端資料,效能也不會很好。長串連方式需要服務端和用戶端的協作了,用戶端發起長串連,服務端也不能斷開,保持一條通訊通道,但是由於這條通道的存在,請求也就不可能結束,頁面一直處於請求狀態而不能結束,所以為了不影響首頁面的載入過程一般會添加一個隱藏的frame來保持串連,但是會受到跨域的限制。這卻不能從根本上解決問題,websocket的技術應運而生,當然首先需要瀏覽器的支援。websocket是用戶端和服務端非同步通訊的技術。他是建立在http協議之上的,在用戶端編程你不需要做任何過多的操作只需要使用WebSocket對象就可以了。他包括三種事件:開啟串連、訊息到達、關閉串連,和一個動作:發送資料。如下:

var socket = new WebSocket("ws://localhost:80")//注意:websocket使用的是ws而不是httpsocket.onopen(event)socket.send()socket.onmessage()socket.onclose()

用戶端編程很容易。服務端呢?

由於websocket協議規定了他需要有一個握手過程:

用戶端:GET /call HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: localhost:8080Origin: http://localhostCookie: somenterCookie服務端:HTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocketConnection: UpgradeWebSocket-Origin: http://localhostWebSocket-Location: ws://localhost:8080/call

通訊數以”\x00″開頭以”\xFF”結尾。具體資料收發過程和一般的通訊過程沒什麼兩樣了。

這些標準使得我們在服務端需要去重新做一些工作。已經有很多人實現了這些,並提供出來供大家使用。

為什麼要提到node.js呢?node.js是一個服務端javascript解譯器,除了語言上簡單很容易實現事件事件驅動外,他真實的優勢在於很容易去實現非同步。他運行在一個V8引擎基礎上,理論上這個模型可以用任意語言來實現,並且已經有人在C++和C#上實現了。

下面是一個node.js的helloworld:

var sys = require("sys"),    http = require("http");http.createServer(function(request, response) {    response.sendHeader(200, {"Content-Type": "text/html"});    response.write("Hello World!");    response.close();}).listen(8080);sys.puts("running...");

web的發展形勢還是大好的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.