# websocket協議實現
1.抓包
wireshark規則: tcp.port == 9000web
2. 結果解析
客戶端請求:服務器
GET /ws/test_2 HTTP/1.1
Host: localhost:9000
Connection: Upgrade
Upgrade: websocket
Origin: http://192.168***:9000
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: t55Td8j76+BHL9vRhPFXCQ==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
服務器響應:websocket
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: 4rAk+P4vM9mrrpKOiDCDSYQpXPA=
釋義:socket
- Connection:Connection必須設置爲Upgrade,表示客戶端但願鏈接升級
- Upgrade:Upgrade必須設置爲WebSocket,表示在取得服務器響應以後,使用HTTP升級將HTTP協議轉換(升級)爲WebSocket協議。
- Sec-WebSocket-key:隨機字符串,用於驗證協議是否爲WebSocket協議而非HTTP協議
- Sec-WebSocket-Version:表示使用WebSocket的哪個版本。
- Sec-WebSocket-Accept:根據Sec-WebSocket-Accept和特殊字符串計算。驗證協議是否爲WebSocket協議。
- Sec-WebSocket-Location:與Host字段對應,表示請求WebSocket協議的地址。
- HTTP/1.1 101 Switching Protocols:101狀態碼錶示升級協議,在返回101狀態碼後,HTTP協議完成工做,轉換爲WebSocket協議。此時就能夠進行全雙工雙向通訊了。