在HTML5規範中,我最喜歡的Web技術是WebSocket API,它正在迅速流行起來。WebSocket提供了壹種流行的技術來取代我們過去幾年壹直使用的Ajax技術。這個新的API提供了壹種使用簡單語法有效地將消息從客戶機推送到服務器的方法。我們來看看HTML5的WebSocket API:在客戶端和服務器端都可以使用。而且有壹個很優秀的第三方API叫Socket。超正析象管(Image Orthicon)
1.什麽是WebSocket API?
WebSocket API是下壹代客戶端和服務器之間的異步通信方式。這種通信取代了單壹的TCP套接字,使用ws或wss協議,可用於任何客戶端和服務器程序。WebSocket目前由W3C標準化。WebSocket已經得到了火狐4、Chrome 4、Opera 10.70、Safari 5等瀏覽器的支持。
WebSocket API最偉大的地方就是服務器和客戶端可以在給定的時間範圍內隨時向對方推送信息。WebSocket並不局限於Ajax(或XHR)通信,因為Ajax技術需要客戶端發起請求,WebSocket服務器和客戶端可以互相推送信息。XHR受域限制,而WebSocket允許跨域通信。
Ajax技術的壹個聰明之處是沒有辦法設計它。WebSocket是為指定的目標創建的,用於雙向推送消息。
二、WebSocket API的用法
只關註客戶端的API,因為每種服務器端語言都有自己的API。下面的代碼片段將打開壹個連接,為該連接創建壹個事件偵聽器,斷開連接,向服務器發回壹條消息,然後關閉該連接。
[復制到剪貼板] [ - ]
代碼:
//創建套接字實例。
var socket = new web socket(' ws://localhost:8080 ');
//打開套接字
socket.onopen = function(event) {
//發送初始化消息。
socket . send(‘我是客戶,我在聽!');
//監聽消息
socket . on message = function(event){
console.log('客戶端收到消息',事件);
};
//監聽套接字的關閉
socket . onclose = function(event){
console.log('客戶端通知套接字已關閉',事件);
};
//關閉套接字....
//socket.close()
};
我們來看看上面的初始化片段。參數是URL,ws代表WebSocket協議。onopen、onclose和onmessage方法將事件連接到套接字實例。每個方法都提供壹個事件來指示套接字的狀態。
onmessage事件提供了壹個可以包含消息正文部分的數據屬性。消息的正文部分必須是壹個字符串,它可以被序列化/反序列化以傳遞更多數據。
WebSocket的語法非常簡單,使用WebSockets非常容易…除非客戶端不支持WebSocket。IE瀏覽器目前不支持WebSocket通信。如果您的客戶端不支持WebSocket通信,有幾種備份方案可供您使用:
閃存技術-閃存可以提供簡單的替代方案。使用Flash最明顯的缺點就是並不是所有的客戶端都安裝了Flash,有些客戶端比如iPhone/iPad不支持Flash。
AJAX長輪詢技術——業界使用AJAX長輪詢技術模擬WebSocket已經有壹段時間了。是可行的技術,但不能優化發送的信息。換句話說,它是壹個解決方案,但不是最好的技術方案。
因為現在的IE等瀏覽器都不支持WebSocket,如果想提供WebSocket事件處理,返回傳輸,在服務器端使用統壹的API,該怎麽辦?幸運的是,Guillermo Rauch創造了壹個插座。IO技術。
第三,帶Socket的WebSocket。超正析象管(Image Orthicon)
插座。IO是Guillermo Rauch創建的WebSocket API,Guillermo Rauch是LearnBoost公司的首席技術官,也是LearnBoost實驗室的首席科學家。插座。IO使用檢測功能來確定是建立WebSocket連接,還是AJAX長輪詢連接,還是Flash。可以快速創建實時應用程序。插座。IO還提供了壹個NodeJS API,它看起來非常像客戶端API。
建立客戶端套接字。超正析象管(Image Orthicon)
插座。IO可以從GitHub下載,文件socket.io.js可以包含在頁面中:
[復制到剪貼板] [ - ]
代碼:
& ltscript src = "/blog/2010/10/31/Dojo-web socket/