websocket是Html5 提供的一個瀏覽器與服務器間進行全雙工通信的網絡技術,依靠這種技術能夠實現客戶端和服務器端的長鏈接,雙向實時通訊。html
websocket是html5出的一個協議 跟http協議沒有關係 下面簡單介紹下websocket的協議以及握手html5
websocket和http同樣都是基於tcp協議的傳輸 websocket和http是兩種不一樣的東西 客戶端要創建 websocket連接時候要在header標記一個Upgrade的HTTP請求表示請求升級 服務端返回響應101的狀態碼 完成握手之後再發送收據就麼有http的事了web
Websocket是一個持久化的協議 協議分爲ws(80端口)協議 和wss(443端口)協議瀏覽器
websocket是基於http協議 也能夠說借用了http完成了一部分握手bash
客戶端發送的握手請求服務器
GET /chat HTTP/1.1
Host: XXX.com
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Sec-WebSocket-key: XXXX
複製代碼
上面依次介紹下websocket
GET /chat HTTP/1.1網絡
能夠是是chat 聊天 也能夠game 遊戲socket
Connection: Upgrade Upgrade: websockettcp
這告訴服務器給升級到websocket協議
Sec-WebSocket-Protocol: chat, superchat
用戶自定義的字符串 在同一個url下 不一樣服務的所須要的協議 好比聊天chat 也能夠其餘的自定義
Sec-WebSocket-Version 告訴服務器所使用的協議版本
Sec-WebSocket-Key 是base64加密的字符串 瀏覽器自動生成
服務端響應客戶端握手請求
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
複製代碼
上面依次介紹下