Comet和WebSocket
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 ,如需轉載請自行聯絡原作者
相關文章
- 各類“伺服器推”技術原理與例項(Polling/COMET/SSE/WebSocket)伺服器Web
- 基於WebSocket的modbus通訊(三)- websocket和串列埠Web串列埠
- 實戰Comet 應用程式開發
- WebSocket 和 Socket 的區別Web
- websocket和http的區別WebHTTP
- comet在asp.net中的實現ASP.NET
- 在 Python 中實現 COMET 技術Python
- websocket和http有什麼不同?以及websocket協議如何實現?WebHTTP協議
- websocket原理和應用入門Web
- websocket學習和群聊實現Web
- WebSocket 和Keep Alive區別?Web
- 當Notification和Websocket遇到https、httpWebHTTP
- kafka和websocket實時資料推送KafkaWeb
- 刨根問底HTTP和WebSocket協議HTTPWeb協議
- 如何讓服務端同時支援WebSocket和SSL加密的WebSocket(即同時支援ws和wss)?服務端Web加密
- Tcp, WebSocket 和 http 之間的通訊TCPWebHTTP
- 刨根問底HTTP和WebSocket協議(二)HTTPWeb協議
- websocket技術,實現單聊和群聊Web
- 刨根問底 HTTP 和 WebSocket 協議(上)HTTPWeb協議
- 利用whistle除錯websocket和socket請求除錯Web
- WebSocketWeb
- 利用WebSocket和EventSource實現服務端推送Web服務端
- 微信小程式和伺服器通訊-WebSocket微信小程式伺服器Web
- 【譯】WebSocket協議第三章——WebSocket網址(WebSocket URIs)Web協議
- Comet如何在GitLab DevOps平臺上簡化機器學習?Gitlabdev機器學習
- 基於ASP.NET的Comet長連線技術解析ASP.NET
- JavaScript Ajax與Comet——“其他跨域技術”的注意要點JavaScript跨域
- WebSocket的故事(一)—— WebSocket的由來Web
- 深入淺出Websocket(一)Websocket協議Web協議
- WebSocket 用法Web
- WebSocket APIWebAPI
- WebSocket 握手Web
- go websocketGoWeb
- FastAPI WebSocketASTAPIWeb
- 初探websocketWeb
- WebSocket 教程Web
- Golang 官方認可的 websocket 庫-gorilla/websocketGolangWeb
- WebSocket於HTTP 、WebSocket與Socket的區別WebHTTP