如何从html5 websocket计算出有效负载大小

myg*_*221 2 java html5 byte payload websocket

如何通过websockets告诉html5消息有效负载长度?

我知道基本协议由一个操作码组成,然后长度由下一个1到8个字节确定,然后下面的值是散列,然后其余的是有效载荷!

我创建了一个java服务器端应用程序,它将从html5客户端接收消息然后处理,iI可以处理最多256个字节的消息.

任何帮助甚至手动解决这个问题都很好(即如何使用确定有效负载的字节)

干杯

Phi*_*ipp 6

有三种方法可以对websocket框架的有效负载长度进行编码,这取决于有效负载的长度:

  1. 125或更少
  2. 126-65535
  3. 65536 +

通过查看第二个字节的最后7位(第2个字节的第一位是屏蔽标志)的值,可以告诉使用哪种方式.

当它低于126时,它是有效载荷长度.当它为126时,有效载荷长度在以下两个字节中.当它为127时,有效载荷长度在以下8个字节中.

因此,解释websocket框架时必须遵循的算法是:

  1. 读取第一个字节(" byte0")以获取fin标志和操作码
  2. 读第2个字节(" byte1")
  3. byte1大于127时,从中减去127 byte1并设置maskedtrue
  4. byte1现在是126时,读取接下来的两个字节并将其转换为a short.这是payload_length.
  5. byte1为127时,读取接下来的8个字节并将其转换为a long.这是payload_length.
  6. 什么时候byte1是其他东西,payload_length它等于的价值byte1
  7. when masked为true时,读取下一个4字节.这是masking_key.
  8. 读取payload_length获取有效负载所需的字节数.
  9. 如果masked为true,则应用于masking_key有效负载.

websocket框架中没有哈希码,你必须混淆一些东西.websocket框架的完整性由其下方的TCP层确保.

有关Websocket协议的更多信息,请参阅RFC 6455.