WebSocket 是一個先進的技術,允許在用戶端和伺服器之間建立互動式通訊會話。以下是 WebSocket 在實際使用上的優點:
1. **雙向通信**: WebSocket 提供了全雙工的通信管道。這意味著伺服器和客戶端都可以同時發送和接收資料,而不需要等待對方完成。
2. **即時性**: 因為它是一個持久的連接,所以資料可以立即無延遲地傳輸。
3. **減少網絡流量**: 與傳統的 HTTP 請求相比,WebSocket 不需要每次交換數據都發送完整的 HTTP 頭部資料,這可以減少不必要的帶寬使用和延遲。
4. **低延遲**: WebSocket 適合於需要低延遲的應用,例如遊戲、財經交易平台或實時訊息系統。
5. **持久的連接**: 一旦 WebSocket 連接建立,它將保持打開狀態,直到客戶端或伺服器決定關閉它。這與傳統的 HTTP 連接不同,後者會在每次請求後被關閉。
6. **適應性**: WebSocket 可以通過已存在的 HTTP 或 HTTPS 端口運行,這使得它可以輕鬆地整合到現有的 IT 基礎設施中。
當 WebSocket 首次建立連接時,它會開始一個稱為 "握手" 的過程。這基本上是一個標準的 HTTP 請求,但帶有一些特殊的頭部資訊,表明客戶端希望建立 WebSocket 連接而不是普通的 HTTP 連接。
1. **客戶端請求**:客戶端發送一個 HTTP 請求到伺服器,這個請求看起來大致像這樣:
```
GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
```
這裡,"Upgrade: websocket" 和 "Connection: Upgrade" 告訴伺服器,客戶端希望升級協議從 HTTP 到 WebSocket。
2. **伺服器回應**:如果伺服器接受此 WebSocket 請求,它會返回以下答覆:
```
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
```
這裡的 "101 Switching Protocols" 表示伺服器同意切換到 WebSocket 協議。
完成這個交握過程後,連接就會從 HTTP 協議升級到 WebSocket 協議,之後兩者可以開始通過這個通道交換資料。