diff --git a/setup.py b/setup.py index ed1811e..fed5932 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ ]) setup( name='socketIO-client', - version='0.7.2', + version='0.7.3', description='A socket.io client library', long_description=DESCRIPTION, license='MIT', diff --git a/socketIO_client/parsers.py b/socketIO_client/parsers.py index 7e043a4..c9f7798 100644 --- a/socketIO_client/parsers.py +++ b/socketIO_client/parsers.py @@ -121,20 +121,37 @@ def _make_packet_prefix(packet): def _read_packet_length(content, content_index): - while get_byte(content, content_index) != 0: - content_index += 1 - content_index += 1 - packet_length_string = '' - byte = get_byte(content, content_index) - while byte != 255: - packet_length_string += str(byte) + try: + content = content.decode() + start = content_index + while content[content_index] != ':': + content_index += 1 + packet_length_string = content[start:content_index] + return content_index, int(packet_length_string) + except: + while get_byte(content, content_index) != 0: + content_index += 1 content_index += 1 + packet_length_string = '' byte = get_byte(content, content_index) - return content_index, int(packet_length_string) + while byte != 255 and byte != ':': + packet_length_string += str(byte) + content_index += 1 + byte = get_byte(content, content_index) + return content_index, int(packet_length_string) def _read_packet_text(content, content_index, packet_length): - while get_byte(content, content_index) == 255: - content_index += 1 - packet_text = content[content_index:content_index + packet_length] - return content_index + packet_length, packet_text + try: + content = content.decode() + while content[content_index] == ':': + content_index += 1 + packet_text = content[content_index:content_index + packet_length] + return content_index + packet_length, packet_text.encode() + except: + byte = get_byte(content, content_index) + while byte == 255 or byte == ':': + content_index += 1 + byte = get_byte(content, content_index) + packet_text = content[content_index:content_index + packet_length] + return content_index + packet_length, packet_text