WebSocket:從建立連線到關閉的完整流程

zhilian發表於2024-02-17

WebSocket是一種基於TCP的協議,它提供了全雙工通訊通道,允許在客戶端和伺服器之間進行實時的雙向資料傳輸。下面是WebSocket的完整流程,包括建立連線、資料傳輸和關閉連線。

  1. 建立連線:

    • 客戶端發起WebSocket握手請求。客戶端傳送一個HTTP請求,其中包含特殊的  Upgrade頭部,指示將協議從HTTP升級為WebSocket。
    • 伺服器接收到握手請求後,進行驗證和協議升級處理。伺服器檢查請求頭部,驗證是否符合WebSocket協議要求,並進行必要的協議升級。
    • 伺服器返回握手響應。如果握手驗證透過,伺服器返回一個包含  Upgrade頭部的HTTP響應,狀態碼為101 Switching Protocols,表示成功升級到WebSocket協議。
    • 建立連線完成。客戶端和伺服器之間的TCP連線已經成功升級為WebSocket連線,雙方可以開始進行實時的雙向資料傳輸。
  2. 資料傳輸:

    • 客戶端和伺服器可以使用WebSocket連線進行雙向通訊。
    • 客戶端和伺服器可以透過傳送WebSocket訊息來交換資料。訊息可以是文字或二進位制形式。
    • 訊息可以透過  send()方法傳送,並透過  onmessage事件接收。客戶端和伺服器都可以使用這些方法和事件進行資料傳輸。
  3. 關閉連線:

    • 客戶端或伺服器可以選擇關閉WebSocket連線。
    • 關閉連線的一方傳送一個特殊的關閉幀(Close Frame)給另一方。
    • 另一方接收到關閉幀後,傳送一個關閉幀作為響應。
    • 雙方收到關閉幀後,彼此之間的WebSocket連線被關閉。

需要注意以下幾點:

  • 在WebSocket連線建立後,客戶端和伺服器之間可以隨時傳送和接收訊息,不需要像HTTP那樣每次請求都要建立新的連線。
  • WebSocket連線是持久的,可以保持較長時間的通訊。
  • WebSocket連線可以透過心跳機制來檢測連線是否存活。
  • WebSocket連線可以進行資料壓縮和加密等處理,以提高效能和安全性。

這是WebSocket的基本流程,它提供了一種實時、雙向的通訊方式,適用於需要實時資料傳輸的應用場景,如聊天應用、實時遊戲等。


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70025954/viewspace-3006659/,如需轉載,請註明出處,否則將追究法律責任。

相關文章