文章目錄
- websocket 協定概述
- WebSocket與HTTP協定的異同
- Websocket優點
- Websocket缺點
- Websocket的作用
- Websocket應用場景
websocket 協定概述
Webscoket是Web瀏覽器和伺服器之間的一種全雙工通訊協定,其中WebSocket協定由IETF定為標準,WebSocket API由W3C定為標準。一旦Web客戶端與伺服器建立起連接,之後的全部資料通訊都透過這個連接進行。通訊過程中,可互相發送JSON、XML、HTML或圖像等任意格式的資料。
WebSocket與HTTP協定的異同
相同點主要有:
- 都是基於TCP的應用層協定;
- 都使用Request/Response模型進行連接的建立;
- 在連接的建立過程中對錯誤的處理方式相同,在這個階段WS可能回傳和HTTP相同的回傳碼;
- 都可以在網路中傳輸資料。
不同點:
- WS使用HTTP來建立連線,但是定義了一系列新的header域,這些域在HTTP中並不會使用;
- WS是HTML5中的協定,支援持久連接;而Http協定不支援持久連接。
- WS的連接不能透過中間人來轉發,它必須是一個直接連接;
- WS連接建立之後,通訊雙方都可以在任何時刻向另一方發送資料;
- WS連接建立之後,資料的傳輸使用幀來傳遞,不再需要Request訊息;
- WS的資料幀有序。
Websocket優點
Websocket協定相比http優勢很明顯,首先在效率上有多方面的提升。
- 傳統的http請求,其併發能力都是依賴同時發起多個TCP連接訪問伺服器實現的(因此併發數受限於瀏覽器允許的併發連接數),而websocket則允許我們在一條ws連接上同時併發多個請求,即在A請求發出後A回應還未到達,就可以繼續發出B請求。由於TCP的慢啟動屬性(新連接速度上來是需要時間的),以及連接本身的握手損耗,都使得websocket協定的這一屬性有很大的效率提升。
- http協定的頭部太大,且每個請求攜帶的幾百上千位元組的頭部大部分是重複的,很多時候可能回應都遠沒有請求中的header空間大。如此多無效的內容傳遞是因為無法利用上一條請求內容,websocket則因為復用長連接而沒有這一問題。
- websocket支援伺服器推送訊息,這帶來了及時訊息通知的更好體驗,也是ajax請求無法達到的。
Websocket缺點
- 伺服器長期維護長連接需要一定的成本
- 各個瀏覽器支援程度不一
- websocket 是長連接,受網路限制比較大,需要處理好重連,例如使用者進電梯或電信使用者打個電話網斷了,這時候就需要重連
Websocket的作用
解決了傳統輪詢(Traditional Polling)、長輪詢(Long Polling)帶來的問題(伺服端負載、延遲等)。
Websocket應用場景
websocket在即時通訊領域運用的比較多,例如社交聊天、彈幕、多玩家遊戲、協同編輯、股票基金即時報價、體育實況更新、影片會議/聊天、基於位置的應用、線上教育、智慧家居等需要高即時的場景。
參考
https://blog.csdn.net/LL845876425/article/details/106393358
https://www.zhihu.com/question/20155314
本文連結https://blog.csdn.net/qq_39903567/article/details/115385466