我理解的websocket

2022-09-05 09:12:13 字數 1011 閱讀 6127

短輪詢:客戶端發起請求,伺服器無論有無訊息都返回資訊,結束http連線。然後繼續發起請求。

長輪詢:客戶端發起請求,建立連線,直到服務端返回訊息response,結束http連線。然後繼續發起請求,重複剛才的動作。

這種做法缺點在於:

短輪詢要求伺服器有很快的處理速度和資源。長輪詢則要求伺服器有很高的併發,同時接收多個連線,服務多個連線。

websocket區別於短、長輪詢:它只建立一次http連線,建立連線後,服務端可主動向客戶端傳送訊息,而不是客戶端傳送請求後,服務端才返回訊息。

http 的長連線:通過connection:keep-alive來建立連線,一次tcp連線完成多次http請求,請求仍需要header,kepp-alive的保持時長在服務端設定。

websocket區別於長連線:一次tcp連線後,雙方均可傳送資料,不需要header,可隨時結束連線。

websocket的工作原理:

客戶端傳送一次特殊的http請求,在經過 tcp/ip 傳輸層協議(三次握手)後,應用層http協議公升級為websocket協議,進行實際的資料傳輸。

這個特殊的http請求的頭部內容包括connection:upgrade upgrade:websocket,切換到websocket協議(響應狀態碼 101 表示伺服器已經理解了客戶端的請求,在傳送完這個響應後,伺服器將會切換到在upgrade請求頭中定義的那些協議)。websocket使用此機制以相容的方式與http伺服器建立連線。

websocket 是一種在單個tcp連線上進行全雙工通訊的協議(基於 tcp 的協議)。

websocket 通過http/1.1 協議的101狀態碼進行握手(與 http 的唯一關係就是它的握手請求可以作為乙個公升級請求(upgrade request)經由 http 伺服器解釋)。

websocket的通訊協議中:客戶端發出的資料幀需要進行掩碼處理。伺服器傳送的資料幀則未經過掩碼處理。所以如果伺服器收到客戶端傳送的未經掩碼處理的資料報,則會自動斷開連線;反之,如果客戶端收到了服務端傳送的經過掩碼處理的資料報,也會自動斷開連線。

WebSocket理解與使用

概念 websocket 是 html5 開始提供的一種在單個 tcp 連線上進行全雙工通訊的協議。特點 websocket 使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。在 websocket api 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以建立永續...

swoole中對websocket的理解

我們目前的大多數應用都是以服務端 介面 客戶端的方式去協調工作的,這樣的好處在於不論是處在何種終端的情況下,都可以完美的和服務端相容。這樣就輕鬆實現了mvc各個部分的真正解耦。但是提高程式的友好性還是有很多路要走,其中乙個大家都會遇到的就是資料實時更新的問題。比如乙個使用者在手機上做了新增操作,這時...

我和 WebSocket 的那些事(一)

我的策劃大佬離職了,在他go之前我都沒有解決好乙個問題,感覺如果我換了工作面試的時候,別人問到 你在做專案的時候,遇到的最頭疼的問題是什麼,是怎麼解決的?首先想到的應該也是他,今天感覺是時候寫點東西了。做 pmgo 的時候,濤哥提出想要用瀏覽器的桌面推送,來替代 hx 的提醒,最早提出websock...