1 websocket请求信息
辅助阅读:http,https协议解析
WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议.
- 特点
(1) 持久化协议,一次连接,永久双向数据传输;
(2) 允许服务端向客户端推送消息; - 请求过程
1.0 Chrome浏览器
1.0.1 请求行
Request URL: ws://192.168.0.168:8080/ssmPureBackend/websocket
Request Method: GET
Status Code: 101
1.0.2 请求头
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: no-cache
Connection: Upgrade
Cookie: JSESSIONID=2CD38E02A17480FB9D3936E3142B3E75; SL_G_WPT_TO=es; SL_GWPT_Show_Hide_tmp=1; SL_wptGlobTipTmp=1
Host: 192.168.0.168:8080
Origin: http://192.168.0.168:8080
Pragma: no-cache
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocket-Key: e/WgsMWJAcEPgKF6VTkgog==
Sec-WebSocket-Version: 13
Upgrade: websocket
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36
1.0.3 响应头
Connection: upgrade
Date: Mon, 21 Oct 2019 08:11:47 GMT
Sec-WebSocket-Accept: otlvloQe+fDU/NebnadKNaXRKgg=
Sec-WebSocket-Extensions: permessage-deflate;client_max_window_bits=15
Upgrade: websocket
1.2 Firefox
1.2.1 请求行
请求网址:http://192.168.0.168:8080/ssmPureBackend/websocket
请求方法:GET
远程地址:192.168.0.168:8080
状态码:
101
版本:HTTP/1.1
1.2.2 请求头
Host: 192.168.0.168:8080
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Sec-WebSocket-Version: 13
Origin: http://192.168.0.168:8080
Sec-WebSocket-Extensions: permessage-deflate
Sec-WebSocket-Key: YqYRkKCLOR+enVOjEulklQ==
Connection: keep-alive, Upgrade
Cookie: JSESSIONID=14C19120808C5641C8D548288798759F
Pragma: no-cache
Cache-Control: no-cache
Upgrade: websocke
1.2.3 响应头
HTTP/1.1 101
Upgrade: websocket
Connection: upgrade
Sec-WebSocket-Accept: ApXjIqAFgR/ESfHy48GEn3ehoRo=
Sec-WebSocket-Extensions: permessage-deflate
Date: Mon, 21 Oct 2019 08:31:03 GMT
2 websocket内容
2.1 请求头
websocket请求头中,三个websocket请求信息
序号 | 标志 | 描述 |
---|---|---|
1 | Sec-WebSocket-Extensions | 扩展信息 |
2 | Sec-WebSocket-Key | 浏览器验证是否为websocket请求.数据由浏览器随机生成,服务器利用该数据,使用SHA-1生成摘要,之后进行base64编码,将结果返回到Sec-WebSocket-Accept |
3 | Sec-WebSocket-Version | 协议版本 |
4 | Connection | 客户端希望升级连接协议 |
2.2 响应头
序号 | 标志 | 描述 |
---|---|---|
1 | Sec-WebSocket-Extensions | 扩展信息 |
2 | Sec-WebSocket-Accept | 服务器返回浏览器传输的key对应的摘要编码 |
3 | Sec-WebSocket-Version | 客户端支持的websocket协议版本,RFC6455要求使用的版本为13 |
4 | HTTP/1.1 101 | 协议转换 |
5 | Upgrade | 升级为websocket通信 |
6 | Connection | 客户端升级连接协议 |
3 websocket消息推送
3.1 消息推送
- send()客户端向服务端发送数据,服务端推送消息给其他客户端
- close()关闭websocket连接
3.2 监听函数
- onopen建立ws连接时触发该事件
- onerror网络连接异常时,触发事件
- onclose当ws关闭时,触发事件
- onmessage当ws接收到服务器推送消息时,触发
3.3 请求方式
websocket请求:ws协议
websocket+ssl:wss协议
【参考文献】
[1]https://www.cnblogs.com/zihe/p/8334029.html
[2]https://www.runoob.com/html/html5-websocket.html
[3]https://www.cnblogs.com/best/p/5695570.html