code: def decode(self, encoded_payload):
          
          self.packets = []
          while encoded_payload:
              if six.byte2int(encoded_payload[0:1]) <= 1:
                  packet_len = 0
                  i = 1
                  while six.byte2int(encoded_payload[i:i + 1]) != 255:
                      packet_len = packet_len * 10 + six.byte2int(
                          encoded_payload[i:i + 1])
                      i += 1
                  self.packets.append(packet.Packet(
                      encoded_packet=encoded_payload[i + 1:i + 1 + packet_len]))
              else:
                  i = encoded_payload.find(b':')
                  if i == -1:
                      raise ValueError('invalid payload')
  
                  # extracting the packet out of the payload is extremely
                  # inefficient, because the payload needs to be treated as
                  # binary, but the non-binary packets have to be parsed as
                  # unicode. Luckily this complication only applies to long
                  # polling, as the websocket transport sends packets
                  # individually wrapped.
                  packet_len = int(encoded_payload[0:i])
                  pkt = encoded_payload.decode('utf-8', errors='ignore')[
                      i + 1: i + 1 + packet_len].encode('utf-8')
                  self.packets.append(packet.Packet(encoded_packet=pkt))
  
                  # the engine.io protocol sends the packet length in
                  # utf-8 characters, but we need it in bytes to be able to
                  # jump to the next packet in the payload
                  packet_len = len(pkt)
              encoded_payload = encoded_payload[i + 1 + packet_len:]
docs: Decode a transmitted payload.