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数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于WebSocket数据,它是通过WebSocket协议进行传输的双向通信数据WebSocket允许在客户端和服务器之间建立持久连接,以便实时地交换数据。这种实时性使得WebSocket在实现实时应用程序(如聊天应用、实时更新、多人协作等)方面非常有用。 WebSocket数据以消息的形式进行传输。消息可以是文本(例如JSON、XML)或二进制数据。客户端和服务器可以通过发送和接收消息来通信。 当客户端与服务器建立WebSocket连接后,它们可以使用WebSocket API来发送和接收消息。例如,客户端可以使用JavaScript中的WebSocket对象发送消息到服务器,而服务器可以使用特定编程语言/框架的相应WebSocket库来处理和响应这些消息。 在使用WebSocket时,通常需要注意以下几点: 1. 建立连接:客户端通过向服务器发起握手请求来建立WebSocket连接。一旦连接建立成功,就可以开始发送和接收消息。 2. 消息格式:消息可以是文本或二进制数据。在发送和接收消息之前,需要将其序列化为适当的格式(例如JSON字符串)。 3. 保持连接:WebSocket连接是持久的,意味着它可以保持打开状态,以便随时进行通信。这与传统的HTTP请求-响应模式不同,后者每次请求结束后都会关闭连接。 4. 错误处理:在使用WebSocket时,需要考虑错误处理机制,例如连接中断、超时或其他异常情况。 希望这能回答您关于WebSocket数据的问题!如果您有更多疑问,请随时提出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值