WebSocket解析

1 websocket请求信息

辅助阅读:http,https协议解析
WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议.

  • 特点
    (1) 持久化协议,一次连接,永久双向数据传输;
    (2) 允许服务端向客户端推送消息;
  • 请求过程

在这里插入图片描述

图1 websocket通信过程

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请求信息

序号标志描述
1Sec-WebSocket-Extensions扩展信息
2Sec-WebSocket-Key浏览器验证是否为websocket请求.数据由浏览器随机生成,服务器利用该数据,使用SHA-1生成摘要,之后进行base64编码,将结果返回到Sec-WebSocket-Accept
3Sec-WebSocket-Version协议版本
4Connection客户端希望升级连接协议

2.2 响应头

序号标志描述
1Sec-WebSocket-Extensions扩展信息
2Sec-WebSocket-Accept服务器返回浏览器传输的key对应的摘要编码
3Sec-WebSocket-Version客户端支持的websocket协议版本,RFC6455要求使用的版本为13
4HTTP/1.1 101协议转换
5Upgrade升级为websocket通信
6Connection客户端升级连接协议

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

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值