WebSocket是一種基於TCP的協議,它為客戶端和伺服器之間提供全雙工通訊通道,支援即時的雙向資料傳輸。連線的建立、資料傳輸和關閉連線是WebSocket的完整流程。
-
建立連線:
- 客戶端發起WebSocket握手請求。用戶端發送一個HTTP請求,其中包含特殊的
Upgrade
頭部,指示將協定從HTTP升級為WebSocket。
- 伺服器接收到握手請求後,進行驗證和協定升級處理。伺服器檢查請求頭部,驗證是否符合WebSocket協定要求,並進行必要的協定升級。
- 伺服器回傳握手回應。如果握手驗證通過,伺服器回傳一個包含
Upgrade
頭部的HTTP響應,狀態碼為101 Switching Protocols,表示成功升級到WebSocket協定。
- 建立連線完成。客戶端和伺服器之間的TCP連接已成功升級為WebSocket連接,雙方可以開始進行即時的雙向資料傳輸。
-
資料傳輸:
- 客戶端和伺服器可以使用WebSocket連線進行雙向通訊。
- 客戶端和伺服器可以透過傳送WebSocket訊息來交換資料。訊息可以是文字或二進位形式。
- 訊息可以透過
send()
方法發送,並透過
onmessage
事件接收。客戶端和伺服器都可以使用這些方法和事件進行資料傳輸。
-
關閉連線:
- 客戶端或伺服器可以選擇關閉WebSocket連線。
- 關閉連接的一方發送一個特殊的關閉訊框(Close Frame)給另一方。
- 另一方接收到關閉訊框後,發送一個關閉訊框作為回應。
- 雙方收到關閉訊框後,彼此之間的WebSocket連線被關閉。
需要注意以下幾點:
- 在WebSocket連線建立後,客戶端和伺服器之間可以隨時傳送和接收訊息,不需要像HTTP那樣每次請求都要建立新的連線。
- WebSocket連線是持久的,可以保持較長時間的通訊。
- WebSocket連線可以透過心跳機制來偵測連線是否存活。
- WebSocket連線可以進行資料壓縮和加密等處理,以提高效能和安全性。
WebSocket提供即時、雙向通信,適用於需要即時資料傳輸的應用,如聊天應用程式、即時遊戲。
以上是WebSocket:從建立連線到關閉的完整流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!