Comet和WebSocket

技術小甜發表於2017-11-15

From Wikipedia, the free encyclopedia

Comet是一個web應用程式模型,在這個模型中,一個持久的http請求執行web伺服器向客戶端推送資料,而瀏覽器不需要顯式的提出請求。Comet是一個寬泛的概念,它圍繞了多種技術來完成這種互動。所有的這些方法都是基於瀏覽器的基本特徵,比如javascript而不是其他外掛。

實現方式 長輪詢

長輪詢是在開啟一條連線以後保持,等待伺服器推送來資料再關閉的方式。

iframe流

流方式是在頁面中插入一個隱藏的iframe,利用其scr屬性在伺服器和客戶端之間建立一條長連結,伺服器向iframe傳輸資料(通常是HTML,內有負責插入資訊的javascript),來實時更新頁面。

流方式的優點是瀏覽器相容好,Google公司在一些產品中使用了iframe流,如Google Talk。

在HTML5標準中,定義了客戶端和伺服器通訊的WebSocket方式,在得到瀏覽器支援以後,WebSocket將會取代Comet成為伺服器推送的方法,目前只有chrome預設支援,Firefox等瀏覽器因為安全性的考慮預設是關閉的。

 

WebSocket 是HTML5一種新的協議。它是實現了瀏覽器與伺服器的雙向通訊。

在 WebSocket API 中,瀏覽器和伺服器只需要要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以資料互相傳送。

現在,很多網站為了實現即時通訊,所用的技術都是輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對伺服器發出HTTP request,然後由伺服器返回最新的資料給客服端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向伺服器發出請求,然而HTTP request 的header是非常長的,裡面包含的資料可能只是一個很小的值,這樣會佔用很多的頻寬和伺服器資源。

而比較新的技術去做輪詢的效果是Comet,使用了AJAX。但這種技術雖然可達到雙向通訊,但依然需要發出請求,而且在Comet中,普遍採用了長連結,這也會大量消耗伺服器頻寬和資源。

面對這種狀況,HTML5定義了WebSocket協議,能更好的節省伺服器資源和頻寬並達到實時通訊。

優點

伺服器與客戶端之間交換的頭資訊很小,大概只有2位元組。

伺服器可以主動傳送資料給客戶端。















本文轉自cnn23711151CTO部落格,原文連結:http://blog.51cto.com/cnn237111/582059 ,如需轉載請自行聯絡原作者








相關文章