websocket協議
協議概述
《RFC 6455 - The WebSocket Protocol》
協議地址:https://datatracker.ietf.org/doc/html/rfc6455
一、包格式

二、數據傳輸單位為幀(Frame)
三、是否需要處理粘包和半包問題
從協議本身看不需要,因為傳送的單位是幀,已經從底層去處理,具體的開發庫有可能有問題
四、websocket的心跳檢測(heartbeat)
假活著狀態。盡管 WebSocket 在正常關閉連接時會觸發 close 事件,但在某些異常情況下(如設備斷電、網絡中斷、網絡切換(WiFi切換到4G)、路由器重啟、NAT 或防火墻超時斷開連接等),該事件可能不會及時觸發,甚至不會觸發。此時連接已實際斷開,但應用層仍誤以為其存活。
為什么服務器端和客戶端都需要各自的心跳機制?服務器端在復雜的網絡環境中,同樣無法主動感知各個客戶端是否存活,因此也需要發送心跳,通過確認客戶端的響應來判斷其存活狀態,從而處理服務器端的連接管理邏輯。
心跳機制的本質。判斷連接是否真正存活的唯一可靠方式,就是看客戶端發出的消息服務器能否收到并及時回應。心跳機制的本質,就是模擬這種消息收發的過程,理解這一點,也就真正理解了心跳的意義。
客戶端和服務端的心跳機制。
1、服務端和客戶端都有一套獨立的心跳機制,兩者獨立運行。
2、服務端的心跳檢測目的。服務器端的 ping/pong 是 WebSocket 協議層的自動機制,主要用來讓服務器監測客戶端的連接狀態,處理服務器端的連接管理邏輯。
3、客戶端的心跳檢測目的。而客戶端的心跳是應用層的自定義機制,需要開發者自行實現,幫助客戶端感知自身連接狀態,處理客戶端自身的連接管理邏輯。
4、是否需要自己實現。在websocket中,服務端已自實現,在客戶端需要開發者自行實現。

浙公網安備 33010602011771號