有效载荷大小超过125个字节

时间:2014-03-20 19:43:09

标签: python html5 websocket byte

我正在使用此函数来解码通过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

1 个答案:

答案 0 :(得分:3)

这不是延长时间的问题。根据{{​​3}}:

  
      
  • 如果长度为0-125,那就是有效载荷长度。
  •   
  • 如果为126,则后面的2个字节被解释为16位无符号整数,即有效负载长度。
  •   
  • 如果为127,则后面的8个字节被解释为64位无符号整数(最高有效位必须为0)是有效载荷长度。
  •   

长度必须切成单独的字节,这意味着你需要向右移位(数量为8位),然后只做保留最后8位和{{1} }(1111 1111)。

RFC 6455非常详细地讨论了这个原则。