WebSocket,是一種網絡傳輸協議
可在單個TCP鏈接上進行全雙工通訊
服務器與客戶端都能主動的向對方發送或接受數據web
1.全雙工
2.二進制幀
3.協議名
引入ws和wss分別表明明文和密文的websocket協議
4.握手:要有一個握手過程服務器
客戶端發送的格式websocket
GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket // 必須設置Websocket,表示但願升級到Websocket協議 Connection: Upgrade //必須設置Upgrade,表示客戶端但願鏈接升級 Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== // 客戶端發送的一個 base64 編碼的密文,用於簡單的認證祕鑰 Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 // 持的Websocket版本
服務端返回的數據格式:網絡
HTTP/1.1 101 Switching Protocols // 表示服務端接受 WebSocket 協議的客戶端鏈接 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec- //驗證客戶端請求報文 把請求頭裏「Sec-WebSocket-Key」的值,加上一個專用的 UUID WebSocket-Protocol: chat
1.較少的控制開銷, 數據包頭部協議較小, 不一樣於http每次請求須要攜帶完整的頭部
2.更強的實時性
3.保持創鏈接狀態 建立通訊後,可省略狀態信息
4.更好的二進制支持
5.支持擴展:用戶能夠擴展websocket協議、實現部分自定義的子協議
6.更好的壓縮效果,提升壓縮率socket
實時場景:彈幕 媒體聊天 協同編輯網絡傳輸協議