websocket 基础理论知识
websocket的基本定义、功能:一种浏览器与服务端之间建立双全工双向通信的协议。可以解决服务器主动向客户端推送数据的问题。
websocket在网络协议中的位置
传言中的websocket是基于http的,具体是怎么回事,往下看
websocket连接的创建过程
请求头
GET wss://bs.jd.com/ws/bs?model=xiaomi&sign=1111 HTTP/1.1
Host: bs.jd.com
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
Upgrade: websocket
Origin: https://bs.jd.com
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: pinId=p3JC18P942VJVmimLBi5xg; pin=13131992543_p; unick=%E8%BE%89%E8%BE%89%E5%93%A6%E5%93%A6121
Sec-WebSocket-Key: m3TZX1Lv3e+qFG2F0IHGEA==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
返回头
HTTP/1.1 101 Switching Protocols
Date: Wed, 04 Sep 2019 03:33:35 GMT
Connection: upgrade
Upgrade: websocket
Sec-WebSocket-Accept: BBKdz9t5OvN4yd6UL3Gxwd/R79I=
Sec-WebSocket-Extensions: permessage-deflate;client_max_window_bits=15
Server: jfe
Strict-Transport-Security: max-age=2592000
http协议的Upgrade头
101 switching protocols
只有http1.1支持Upgrade头
websocket消息结构
服务端与客户端的交互数据单位为Message, Message分为二进制格式、文本格式。
在websocket的底层,会将Message分为一个或多个Frame(数据帧)进行传输。
frame定义