有三种方法可以对websocket框架的有效负载长度进行编码,这取决于有效负载的长度:
通过查看第二个字节的最后7位(第2个字节的第一位是屏蔽标志)的值,可以告诉使用哪种方式.
当它低于126时,它是有效载荷长度.当它为126时,有效载荷长度在以下两个字节中.当它为127时,有效载荷长度在以下8个字节中.
因此,解释websocket框架时必须遵循的算法是:
byte0")以获取fin标志和操作码byte1")byte1大于127时,从中减去127 byte1并设置masked为truebyte1现在是126时,读取接下来的两个字节并将其转换为a short.这是payload_length.byte1为127时,读取接下来的8个字节并将其转换为a long.这是payload_length.byte1是其他东西,payload_length它等于的价值byte1masked为true时,读取下一个4字节.这是masking_key.payload_length获取有效负载所需的字节数.masked为true,则应用于masking_key有效负载.websocket框架中没有哈希码,你必须混淆一些东西.websocket框架的完整性由其下方的TCP层确保.
有关Websocket协议的更多信息,请参阅RFC 6455.