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
|
import time
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
|
from .compat import get_byte, get_character, get_unicode
|
||||||
from .exceptions import PacketError, TimeoutError
|
from .exceptions import PacketError, TimeoutError
|
||||||
from .transports import _get_response
|
from .transports import _get_response
|
||||||
|
|
||||||
|
|
@ -145,7 +146,7 @@ class EngineIO(object):
|
||||||
engineIO_packets = _decode_content(response.content)
|
engineIO_packets = _decode_content(response.content)
|
||||||
engineIO_packet_type, engineIO_packet_data = engineIO_packets[0]
|
engineIO_packet_type, engineIO_packet_data = engineIO_packets[0]
|
||||||
assert engineIO_packet_type == 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)
|
print(value_by_name)
|
||||||
# value_by_name['upgrades']
|
# value_by_name['upgrades']
|
||||||
self._ping_interval = value_by_name['pingInterval'] / float(1000)
|
self._ping_interval = value_by_name['pingInterval'] / float(1000)
|
||||||
|
|
@ -254,7 +255,7 @@ class EngineIO(object):
|
||||||
print('message()')
|
print('message()')
|
||||||
engineIO_packets = _decode_content(response.content)
|
engineIO_packets = _decode_content(response.content)
|
||||||
for engineIO_packet_type, engineIO_packet_data in engineIO_packets:
|
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:]
|
socketIO_packet_data = engineIO_packet_data[1:]
|
||||||
print('engineIO_packet_type = %s' % engineIO_packet_type)
|
print('engineIO_packet_type = %s' % engineIO_packet_type)
|
||||||
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
||||||
|
|
@ -276,7 +277,7 @@ class EngineIO(object):
|
||||||
print('ping()')
|
print('ping()')
|
||||||
engineIO_packets = _decode_content(response.content)
|
engineIO_packets = _decode_content(response.content)
|
||||||
for engineIO_packet_type, engineIO_packet_data in engineIO_packets:
|
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:]
|
socketIO_packet_data = engineIO_packet_data[1:]
|
||||||
print('engineIO_packet_type = %s' % engineIO_packet_type)
|
print('engineIO_packet_type = %s' % engineIO_packet_type)
|
||||||
print('socketIO_packet_type = %s' % socketIO_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)
|
engineIO_packet_data = super(SocketIO, self)._process_packet(packet)
|
||||||
if engineIO_packet_data is None:
|
if engineIO_packet_data is None:
|
||||||
return
|
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:]
|
socketIO_packet_data = engineIO_packet_data[1:]
|
||||||
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
print('socketIO_packet_type = %s' % socketIO_packet_type)
|
||||||
socketIO_packet_data_parsed = _parse_socketIO_data(
|
socketIO_packet_data_parsed = _parse_socketIO_data(
|
||||||
|
|
@ -447,7 +448,7 @@ def _decode_content(content):
|
||||||
break
|
break
|
||||||
content_index, packet_string = _read_packet_string(
|
content_index, packet_string = _read_packet_string(
|
||||||
content, content_index, packet_length)
|
content, content_index, packet_length)
|
||||||
packet_type = int(packet_string[0])
|
packet_type = int(get_character(packet_string, 0))
|
||||||
packet_data = packet_string[1:]
|
packet_data = packet_string[1:]
|
||||||
packets.append((packet_type, packet_data))
|
packets.append((packet_type, packet_data))
|
||||||
return packets
|
return packets
|
||||||
|
|
@ -462,18 +463,20 @@ def _encode_content(packets):
|
||||||
|
|
||||||
|
|
||||||
def _read_packet_length(content, content_index):
|
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
|
||||||
content_index += 1
|
content_index += 1
|
||||||
packet_length_string = ''
|
packet_length_string = ''
|
||||||
while ord(content[content_index]) != 255:
|
byte = get_byte(content, content_index)
|
||||||
packet_length_string += str(ord(content[content_index]))
|
while byte != 255:
|
||||||
|
packet_length_string += str(byte)
|
||||||
content_index += 1
|
content_index += 1
|
||||||
|
byte = get_byte(content, content_index)
|
||||||
return content_index, int(packet_length_string)
|
return content_index, int(packet_length_string)
|
||||||
|
|
||||||
|
|
||||||
def _read_packet_string(content, content_index, packet_length):
|
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
|
content_index += 1
|
||||||
packet_string = content[content_index:content_index + packet_length]
|
packet_string = content[content_index:content_index + packet_length]
|
||||||
return content_index + packet_length, packet_string
|
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):
|
def _make_packet_header(packet_string):
|
||||||
length_string = str(len(packet_string))
|
length_string = str(len(packet_string))
|
||||||
header_digits = [0]
|
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(ord(length_string[i]) - 48)
|
||||||
header_digits.append(255)
|
header_digits.append(255)
|
||||||
return ''.join(chr(x) for x in header_digits)
|
return ''.join(chr(x) for x in header_digits)
|
||||||
|
|
||||||
|
|
||||||
def _parse_engineIO_data(data):
|
def _parse_engineIO_data(data):
|
||||||
return EngineIOData(data=data)
|
return EngineIOData(data=get_unicode(data))
|
||||||
|
|
||||||
|
|
||||||
def _parse_socketIO_data(data):
|
def _parse_socketIO_data(data):
|
||||||
|
data = get_unicode(data)
|
||||||
if data.startswith('/'):
|
if data.startswith('/'):
|
||||||
try:
|
try:
|
||||||
path, data = data.split(',', 1)
|
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