WebSocket服务器在Java (hybi 10)发送和接收



我正在为最后一个版本的草案制作一个Java服务器。我成功地建立了联系,效果很好。

问题是我不明白数据是如何编码的,我一直在试图找到一些例子,但我找不到任何东西。所以我想自己做这件事,但需要一些帮助。

这是一个框架的图像。

但是我不明白载荷从哪里开始。什么是:

扩展有效载荷长度(16/63)(如果有效载荷len==126/127)

那是我的有效载荷应该在哪里?

谁能给点帮助,因为你可能看到,我完全迷路了…

问题是长度并不总是适合7位(你只能用7位表示数字0到127),在这种情况下,下面的2或8个字节将用于使长度适合:

  • 126表示以下2个字节用于长度
  • 127表示以下8个字节用于长度

如果未编码,则负载从索引2、4或10开始。当编码时,它从6,8或14开始(因为有4个掩码字节)。

我之前发布了一些关于解码有效载荷数据的伪代码。


要实际获得"实数"长度(而不是单独的字节),您可以使用按位移位操作符如下(如果长度有两个字节):

var length = (bytes[2] << 8) | (bytes[3] << 0);

这将像这样计算:

假设:

  • bytes[2]01101001 (105为10进制)
  • bytes[3] = 10100101 (165进制为10)

那么<<将会做:

01101001 00000000   // moved 8 places to the left, filled with zeroes
         10100101   // moved 0 places (nothing really happening, you can eliminate '<< 0')

|基本上是添加它们:

01101001 00000000
         10100101
-----------------  |
01101001 10100101      (in base 10 that's 27045)

如果你有字节105165,那么它们代表27045的长度

相关内容

  • 没有找到相关文章

最新更新