负载大小大于 125 字节
Posted
技术标签:
【中文标题】负载大小大于 125 字节【英文标题】:Payload size larger than 125 bytes 【发布时间】:2014-03-20 19:43:08 【问题描述】:我正在使用这个函数来解码通过 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
【问题讨论】:
对于任何正在查看的人:def decode_data(data): if not len(data): return False length = ord(data[1]) & 127 if length == 126: mask = data[4 :8] raw = data[8:] elif length == 127: mask = data[10:14] raw = data[14:] else: mask = data[2:6] raw = data[6:] ret = '' for cnt, d in enumerate(raw): ret += chr(ord(d) ^ ord(mask[cnt%4])) return ret 【参考方案1】:这不是延长它的问题。根据RFC 6455:
如果长度为 0-125,则为有效载荷长度。 如果为 126,则解释为 16 位无符号整数的以下 2 个字节是有效负载长度。 如果为 127,则解释为 64 位无符号整数(最高有效位必须为 0)的以下 8 个字节是有效负载长度。
长度必须被分割成单独的字节,这意味着您需要向右移位(八位),然后通过执行和1111 1111
(这是255
)。
This answer 详细介绍了这个主体。
【讨论】:
以上是关于负载大小大于 125 字节的主要内容,如果未能解决你的问题,请参考以下文章
WebSocketClient 无法接收大小大于约 16k 字节的消息。抛出 ConnectionLostException