Fix Python 3 compatibility issues
This commit is contained in:
parent
8641818cf2
commit
23844f9e76
2 changed files with 28 additions and 11 deletions
|
|
@ -5,6 +5,7 @@ import threading
|
|||
import time
|
||||
from collections import namedtuple
|
||||
|
||||
from .compat import get_byte, get_character, get_unicode
|
||||
from .exceptions import PacketError, TimeoutError
|
||||
from .transports import _get_response
|
||||
|
||||
|
|
@ -145,7 +146,7 @@ class EngineIO(object):
|
|||
engineIO_packets = _decode_content(response.content)
|
||||
engineIO_packet_type, engineIO_packet_data = engineIO_packets[0]
|
||||
assert engineIO_packet_type == 0
|
||||
value_by_name = json.loads(engineIO_packet_data)
|
||||
value_by_name = json.loads(get_unicode(engineIO_packet_data))
|
||||
print(value_by_name)
|
||||
# value_by_name['upgrades']
|
||||
self._ping_interval = value_by_name['pingInterval'] / float(1000)
|
||||
|
|
@ -254,7 +255,7 @@ class EngineIO(object):
|
|||
print('message()')
|
||||
engineIO_packets = _decode_content(response.content)
|
||||
for engineIO_packet_type, engineIO_packet_data in engineIO_packets:
|
||||
socketIO_packet_type = int(engineIO_packet_data[0])
|
||||
socketIO_packet_type = int(get_character(engineIO_packet_data, 0))
|
||||
socketIO_packet_data = engineIO_packet_data[1:]
|
||||
print('engineIO_packet_type = %s' % engineIO_packet_type)
|
||||
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
||||
|
|
@ -276,7 +277,7 @@ class EngineIO(object):
|
|||
print('ping()')
|
||||
engineIO_packets = _decode_content(response.content)
|
||||
for engineIO_packet_type, engineIO_packet_data in engineIO_packets:
|
||||
socketIO_packet_type = int(engineIO_packet_data[0])
|
||||
socketIO_packet_type = int(get_character(engineIO_packet_data, 0))
|
||||
socketIO_packet_data = engineIO_packet_data[1:]
|
||||
print('engineIO_packet_type = %s' % engineIO_packet_type)
|
||||
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
||||
|
|
@ -337,7 +338,7 @@ class SocketIO(EngineIO):
|
|||
engineIO_packet_data = super(SocketIO, self)._process_packet(packet)
|
||||
if engineIO_packet_data is None:
|
||||
return
|
||||
socketIO_packet_type = int(engineIO_packet_data[0])
|
||||
socketIO_packet_type = int(get_character(engineIO_packet_data, 0))
|
||||
socketIO_packet_data = engineIO_packet_data[1:]
|
||||
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
||||
socketIO_packet_data_parsed = _parse_socketIO_data(
|
||||
|
|
@ -447,7 +448,7 @@ def _decode_content(content):
|
|||
break
|
||||
content_index, packet_string = _read_packet_string(
|
||||
content, content_index, packet_length)
|
||||
packet_type = int(packet_string[0])
|
||||
packet_type = int(get_character(packet_string, 0))
|
||||
packet_data = packet_string[1:]
|
||||
packets.append((packet_type, packet_data))
|
||||
return packets
|
||||
|
|
@ -462,18 +463,20 @@ def _encode_content(packets):
|
|||
|
||||
|
||||
def _read_packet_length(content, content_index):
|
||||
while ord(content[content_index]) != 0:
|
||||
while get_byte(content, content_index) != 0:
|
||||
content_index += 1
|
||||
content_index += 1
|
||||
packet_length_string = ''
|
||||
while ord(content[content_index]) != 255:
|
||||
packet_length_string += str(ord(content[content_index]))
|
||||
byte = get_byte(content, content_index)
|
||||
while byte != 255:
|
||||
packet_length_string += str(byte)
|
||||
content_index += 1
|
||||
byte = get_byte(content, content_index)
|
||||
return content_index, int(packet_length_string)
|
||||
|
||||
|
||||
def _read_packet_string(content, content_index, packet_length):
|
||||
while ord(content[content_index]) == 255:
|
||||
while get_byte(content, content_index) == 255:
|
||||
content_index += 1
|
||||
packet_string = content[content_index:content_index + packet_length]
|
||||
return content_index + packet_length, packet_string
|
||||
|
|
@ -482,17 +485,18 @@ def _read_packet_string(content, content_index, packet_length):
|
|||
def _make_packet_header(packet_string):
|
||||
length_string = str(len(packet_string))
|
||||
header_digits = [0]
|
||||
for i in xrange(len(length_string)):
|
||||
for i in range(len(length_string)):
|
||||
header_digits.append(ord(length_string[i]) - 48)
|
||||
header_digits.append(255)
|
||||
return ''.join(chr(x) for x in header_digits)
|
||||
|
||||
|
||||
def _parse_engineIO_data(data):
|
||||
return EngineIOData(data=data)
|
||||
return EngineIOData(data=get_unicode(data))
|
||||
|
||||
|
||||
def _parse_socketIO_data(data):
|
||||
data = get_unicode(data)
|
||||
if data.startswith('/'):
|
||||
try:
|
||||
path, data = data.split(',', 1)
|
||||
|
|
|
|||
13
socketIO_client/compat.py
Normal file
13
socketIO_client/compat.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import six
|
||||
|
||||
|
||||
def get_byte(x, index):
|
||||
return six.indexbytes(x, index)
|
||||
|
||||
|
||||
def get_character(x, index):
|
||||
return chr(six.indexbytes(x, index))
|
||||
|
||||
|
||||
def get_unicode(x):
|
||||
return x.decode('utf-8')
|
||||
Loading…
Add table
Add a link
Reference in a new issue