1.短輪詢
短輪詢的原理很簡單,每隔一段時間客戶端就發出一個請求,去獲取服務器最新的數據,必定程度上模擬實現了即時通信。
優勢:兼容性強,實現很是簡單
缺點:延遲性高,很是消耗請求資源,影響性能
2.comet
comet有兩種主要實現手段,一種是基於 AJAX 的長輪詢(long-polling)方式,另外一種是基於 Iframe 及 htmlfile 的流(streaming)方式,一般被叫作長鏈接。
具體兩種手段的操做方法請移步Comet技術詳解:基於HTTP長鏈接的Web端實時通訊技術
長輪詢優缺點:
優勢:兼容性好,資源浪費較小
缺點:服務器hold鏈接會消耗資源,返回數據順序無保證,難於管理維護
長鏈接優缺點:
優勢:兼容性好,消息即時到達,不發無用請求
缺點:服務器維護長鏈接消耗資源
3.SSE 使用指南請看Server-Sent Events 教程
SSE(Server-Sent Event,服務端推送事件)是一種容許服務端向客戶端推送新數據的HTML5技術
優勢:基於HTTP而生,所以不須要太多改造就能使用,使用方便,而websocket很是複雜,必須藉助成熟的庫或框架
缺點:基於文本傳輸效率沒有websocket高,不是嚴格的雙向通訊,客戶端向服務端發送請求沒法複用以前的鏈接,須要從新發出獨立的請求
4.Websocket
Websocket是一個全新的、獨立的協議,基於TCP協議,與http協議兼容、卻不會融入http協議,僅僅做爲html5的一部分,其做用就是在服務器和客戶端之間創建實時的雙向通訊。
優勢:真正意義上的實時雙向通訊,性能好,低延遲
缺點:獨立與http的協議,所以須要額外的項目改造,使用複雜度高,必須引入成熟的庫,沒法兼容低版本瀏覽器
5.Web Worker
Web Worker 的做用,就是爲 JavaScript 創造多線程環境,容許主線程建立 Worker 線程,將一些任務分配給後者運行
6.Service workers
Service workers 本質上充當Web應用程序與瀏覽器之間的代理服務器,也能夠在網絡可用時做爲瀏覽器和網絡間的代理,建立有效的離線體驗。html