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
- 在 Python 中實現 COMET 技術Python
- 基於WebSocket的modbus通訊(三)- websocket和串列埠Web串列埠
- websocket和http的區別WebHTTP
- websocket和http有什麼不同?以及websocket協議如何實現?WebHTTP協議
- websocket學習和群聊實現Web
- 當Notification和Websocket遇到https、httpWebHTTP
- websocket原理和應用入門Web
- kafka和websocket實時資料推送KafkaWeb
- Comet如何在GitLab DevOps平臺上簡化機器學習?Gitlabdev機器學習
- Tcp, WebSocket 和 http 之間的通訊TCPWebHTTP
- 利用whistle除錯websocket和socket請求除錯Web
- websocketWeb
- 利用WebSocket和EventSource實現服務端推送Web服務端
- Fiddler抓包和修改WebSocket資料,支援wssWeb
- 【譯】WebSocket協議第三章——WebSocket網址(WebSocket URIs)Web協議
- websocket和http2有什麼區別?http2能取代websocket嗎?為什麼?WebHTTP
- WebSocket的故事(一)—— WebSocket的由來Web
- 深入淺出Websocket(一)Websocket協議Web協議
- go websocketGoWeb
- WebSocket 用法Web
- FastAPI WebSocketASTAPIWeb
- WebSocket APIWebAPI
- WebSocket 握手Web
- websocket and fastapiWebASTAPI
- 開發基於Django和Websocket的堡壘機DjangoWeb
- 關於 WebSocket 和 HTTP 區別的思考以及一個最簡單的 WebSocket 的客戶端和伺服器實現WebHTTP客戶端伺服器
- WebSocket於HTTP 、WebSocket與Socket的區別WebHTTP
- WebSocket原理與實踐(二)---WebSocket協議Web協議
- Golang 官方認可的 websocket 庫-gorilla/websocketGolangWeb
- WebSocket 的故事(四)—— Spingboot 中,如何利用 WebSocket 和 STOMP 快速構建點對點的訊息模式(2)Webboot模式
- WebSocket的故事(三)—— Springboot中,如何利用WebSocket和STOMP快速構建點對點的訊息模式(1)WebSpring Boot模式
- 深入淺出Websocket(二)分散式Websocket叢集Web分散式
- 關於Ajax和websocket的區別以及使用場景!Web
- 使用socket.io和node.js搭建websocket應用Node.jsWeb
- WebSocket系列之如何建立和維護可靠的連線Web
- Sanic WebSocket 使用Web
- websocket及延展Web
- webSocket筆記Web筆記