websocket技術

在瀏覽器中經過http僅能實現單向的通訊,comet能夠必定程度上模擬雙向通訊,但效率較低,並須要服務器有較好的支持; flash中的socket和xmlsocket能夠實現真正的雙向通訊,經過 flex ajax bridge,能夠在javascript中使用這兩項功能. 能夠預見,若是websocket一旦在瀏覽器中獲得實現,將會替代上面兩項技術,獲得普遍的使用.面對這種情況,HTML5定義了WebSocket協議,能更好的節省服務器資源和帶寬並達到實時通信。
在JavaEE7中也實現了WebSocket協議。
WebSocket protocol 是HTML5一種新的協議(protocol)。它是實現了瀏覽器與服務器全雙工通訊(full-duplex)。
現不少網站爲了實現即時通信(real-time),所用的技術都是輪詢(polling)。輪詢是在特定的的時間間隔(time interval)(如每1秒),由瀏覽器對服務器發出HTTP request,而後由服務器返回最新的數據給客服端的瀏覽器。這種傳統的HTTP request 的模式帶來很明顯的缺點 – 瀏覽器須要不斷的向服務器發出請求(request),然而HTTP request 的header是很是長的,裏面包含的數據可能只是一個很小的值,這樣會佔用不少的帶寬。
而最比較新的技術去作輪詢的效果是Comet – 用了AJAX。但這種技術雖然可達到全雙工通訊,但依然須要發出請求(reuqest)。
在 WebSocket API,瀏覽器和服務器只須要要作一個握手的動做,而後,瀏覽器和服務器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。在此WebSocket 協議中,爲咱們實現即時服務帶來了兩大好處:
1. Header
互相溝通的Header是很小的-大概只有 2 Bytes
2. Server Push
服務器能夠主動傳送數據給客戶端
 
點評:
目前基於網頁的voip呼叫功能,都是基於flash的socket建立語音通道,進行實時通訊;
html5則是直接使用websocket協議實現;
相關文章
相關標籤/搜索