我正在使用此函数来解码通过html5 websockets发送的包 但是当有效载荷超过125个字节时,它会崩溃。 是否有可能使它更大?
def decode_data(data):
databyte = bytearray(data)
datalen = (0x7F & databyte[1])
str_data = ''
if(datalen > 0):
mask_key = databyte[2:6]
masked_data = databyte[6:(6+datalen)]
unmasked_data = [masked_data[i] ^ mask_key[i%4] for i in range(len(masked_data))]
str_data = str(bytearray(unmasked_data))
return str_data
答案 0 :(得分:3)
这不是延长时间的问题。根据{{3}}:
- 如果长度为0-125,那就是有效载荷长度。
- 如果为126,则后面的2个字节被解释为16位无符号整数,即有效负载长度。
- 如果为127,则后面的8个字节被解释为64位无符号整数(最高有效位必须为0)是有效载荷长度。
长度必须切成单独的字节,这意味着你需要向右移位(数量为8位),然后只做保留最后8位和{{1} }(1111 1111
)。
RFC 6455非常详细地讨论了这个原则。