websocket 協議理解

WebSocket概述##

WebSocket是在單個的TCP連接上提供了全雙工通信通道的協議,該協議於2011年作爲RFC6455被正式標準化。WebSocket在Web服務器和瀏覽器端都需要做實現。如果沒有WebSocket,爲了實現即時通訊,可以採用的技術都是輪詢(polling)。輪詢是在特定的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然後由服務器返回最新的數據給客戶端的瀏覽器。這種傳統的HTTP請求的模式帶來很明顯的缺點 – 瀏覽器需要不斷的向服務器發出請求,然而HTTP請求中頭部會佔用一定的開銷,這種方式效率和實效性都不太好。而利用WebSocket,瀏覽器和服務器在基於HTTP協議完成握手後,在瀏覽器和服務器之間就形成了一條通信通道,他們之間就直接可以互相傳送數據。在WebSocket 協議中,爲我們實現即時服務帶來了兩大好處: 1) 頭信息少,減少了系統的消耗。 2)服務器端推送,服務器不再被動的接收到瀏覽器的請求後才返回數據,而是在有新數據時就主動推送給瀏覽器。 通過這種方式,效率和實效性都得到了明顯的提高,現在大部分瀏覽器都已經實現了對WebSocket協議的支持,當然使用WebSocket付出的代價是瀏覽器和服務器端要保留一個“有狀態”的連接。

基於輪詢機制和WebSocket的架構在實際項目中哪一種效率高,很難一概而論,因爲這個跟實際的業務場景有關,最好的方法就是通過模擬實際的用戶行爲,對被測系統進行打壓測試,然後觀察被測系統的表現。採用輪詢機制的系統,因爲基於HTTP/HTTPS協議,現在有很多性能測試工具可以實現對這種系統進行測試。而基於WebSocket的性能測試則需要費一番功夫,不過幸運的是在開源軟件生態日益完善的今天,這也不是什麼難題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章