WEB 實時推送技術的總結

隨著 Web 的發展,用戶對於 Web 的實時推送要求也越來越高 ,比如,工業運行監控、Web 在線通訊、即時報價系統、在線遊戲等,都需要將後臺發生的變化主動地、實時地傳送到瀏覽器端,而不需要用戶手動地刷新頁面。本文對過去和現在流行的 Web 實時推送技術進行了比較與總結。

一、雙向通信
HTTP 協議有一個缺陷:通信只能由客戶端發起。舉例來說,我們想了解今天的天氣,只能是客戶端向服務器發出請求,服務器返回查詢結果。HTTP 協議做不到服務器主動向客戶端推送信息。這種單向請求的特點,註定瞭如果服務器有連續的狀態變化,客戶端要獲知就非常麻煩。在WebSocket協議之前,有三種實現雙向通信的方式:輪詢(polling)、長輪詢(long-polling)和iframe流(streaming)。

1.輪詢(polling)

WEB 實時推送技術的總結

輪詢是客戶端和服務器之間會一直進行連接,每隔一段時間就詢問一次。其缺點也很明顯:連接數會很多,一個接受,一個發送。而且每次發送請求都會有Http的Header,會很耗流量,也會消耗CPU的利用率

  • 優點:實現簡單,無需做過多的更改
  • 缺點:輪詢的間隔過長,會導致用戶不能及時接收到更新的數據;輪詢的間隔過短,會導致查詢請求過多,增加服務器端的負擔。
WEB 實時推送技術的總結

2.長輪詢(long-polling)

WEB 實時推送技術的總結

長輪詢是對輪詢的改進版,客戶端發送HTTP給服務器之後,看有沒有新消息,如果沒有新消息,就一直等待。當有新消息的時候,才會返回給客戶端。在某種程度上減小了網絡帶寬和CPU利用率等問題。由於http數據包的頭部數據量往往很大(通常有400多個字節),但是真正被服務器需要的數據卻很少(有時只有10個字節左右),這樣的數據包在網絡上週期性的傳輸,難免對網絡帶寬是一種浪費。

優點:比 Polling 做了優化,有較好的時效性

缺點:保持連接會消耗資源; 服務器沒有返回有效數據,程序超時。

WEB 實時推送技術的總結

3.iframe流(streaming)

WEB 實時推送技術的總結

iframe流方式是在頁面中插入一個隱藏的iframe,利用其src屬性在服務器和客戶端之間創建一條長連接,服務器向iframe傳輸數據(通常是HTML,內有負責插入信息的javascript),來實時更新頁面。

優點:消息能夠實時到達;瀏覽器兼容好

缺點:服務器維護一個長連接會增加開銷;IE、chrome、Firefox會顯示加載沒有完成,圖標會不停旋轉。

WEB 實時推送技術的總結

客戶端只請求一次,然而服務端卻是源源不斷向客戶端發送數據,這樣服務器維護一個長連接會增加開銷。
以上我們介紹了三種實時推送技術,然而各自的缺點很明顯,使用起來並不理想,接下來我們著重介紹另一種技術--websocket,它是比較理想的雙向通信技術。


分享到:


相關文章: