介绍
WebSocket是一种在单个TCP连接上进行全双工通信的协议。它可以实现服务器可以主动传送数据给客户端
原理
'''
分为两大部分
1: 握手环节:主要验证服务端是否支持websocket (浏览器绝大多数都支持websocket)
首先浏览器连接到服务器
浏览器产生一个随机字符串 给服务器发送一份(放在请求头里)
服务器和浏览器接下来都做此操作
随机字符串 + magic string(全球统一的) 拼接
然后将拼接好的结果进行加密处理(sha1/base64)成密文
服务器将密文返回拼给浏览器
浏览器进行比对 如果一致说明服务器支持websocket协议 如果不一致则报错
如果对比一致 建立websocket链接 基于该链接接收消息
2: 收发数据
密文传输 ===>涉及到解密(全球统一)的过程
网络传输的数据都是二进制 对应到Python中就是bytes
数据解密过程
1:先读取数据的第二个字节的后七位(payload)
2:根据7位数据的长度来指定不同的解密流程
= 127: 再往后读取8个字节
= 126: 再往后读取2个字节
<=125: 再在往后读取
3: 除去前面读取数据之外 再往后读取4个字节(masking-key) ==(剩下的就是真实的数据)
拿着它去解析后面的真实数据(依据一个算公式)
'''