websocket優缺點、應用場景以及與HTTP協定的異同

文章目錄

  • 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