websocket数据解包

websocket和TCP/IP多了一个握手协议

1握手的过程是

1==》A连接B会发送 固定格式
GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.1:5504
Origin: http://127.0.0.1:5504
Sec-WebSocket-Key: KDON8mAMGOuBcAsxnNKysQ==
Sec-WebSocket-Version: 13

2===》服务端收到握手请求时
B收到后解析  得到 Sec-WebSocket-Key: 的值KDON8mAMGOuBcAsxnNKysQ==  (key是随机生成的)

将258EAFA5-E914-47DA-95CA-C5AB0DC85B11   拼接到key的后面

258EAFA5-E914-47DA-95CA-C5AB0DC85B11 该值是固定的,所有websocket的该值都一样

得到KDON8mAMGOuBcAsxnNKysQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11

将该值sha1加密后,再base64编码 得到 新的key

然后将新的key,填入Sec-WebSocket-Accept:的后面  将下面固定格式返回,客户端会解析 新的key对不对,一样的话。握手就建立成功。


3===》B返回A

HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept:Y7GHQkcvYEsjoekMeEkxZgpwy/E=

2:websocket 数据的接受发送

websocket数据外面加了一层封装
封装内容主要是数据 前面加了两个字节

第一个字节: 最高位如果是1表示该消息,是消息的尾部,如果是0表示后续还有数据包
          最低四位 用来表示 消息类型的,不同的语言,这四位的值可能不一样。

第二个字节: 最高位 0/1表示 后面是否跟着4个字节的掩码
           剩下的7位如果值<=125 表示 后面的数据大小 就是该七位的大小
           剩下的7位如果值=126  表示后面跟着2个字节的,这两个字节 用来存数据的大小字节
           剩下的7位如果值=127  表示后面跟着8个字节的,这八个字节 用来存数据的大小字节
         
            

websocket数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值