如何通过websockets告知html5消息的有效负载长度?
我知道基本协议由一个操作码组成,然后长度由下一个1到8个字节决定,然后下面的值是散列,然后其余的是有效载荷!
我创建了一个javaserveride应用程序,它将从html5客户端接收消息然后处理,iI可以处理最多256个字节的消息。
任何帮助即使手动完成这项任务也会很好(即如何使用确定有效载荷的字节)
干杯
答案 0 :(得分:6)
有三种方法可以对websocket框架的有效负载长度进行编码,这取决于有效负载的长度:
通过查看第二个字节的7个最后一位的值(第二个字节的第一个位是屏蔽标志),可以告诉使用哪种方式。
当它低于126时,它是有效载荷长度。 当它为126时,有效载荷长度在以下两个字节中。 当它为127时,有效载荷长度为以下8个字节。
因此,您必须遵循以解释websocket框架的算法是:
byte0
”)以获取fin标志和操作码byte1
”)byte1
大于127时,从byte1
减去127并将masked
设为true
byte1
现在为126时,读取接下来的两个字节并将其转换为short
。这是payload_length
。byte1
为127时,读取接下来的八个字节并将其转换为long
。这是payload_length
。byte1
为其他内容时,payload_length
等于byte1
masked
为真时,读取下一个4字节。这是masking_key
。payload_length
中获得有效负载的字节数。masked
为真时,将masking_key
应用于有效负载。websocket框架中没有哈希码,你必须混淆一些东西。 websocket框架的完整性由其下面的TCP层确保。
有关Websocket协议的更多信息,请参阅RFC 6455。