Updates to get XHR polling working correctly. Mostly encode/decode issues.
This commit is contained in:
parent
2d1257bf8f
commit
f4a96c72d0
3 changed files with 21 additions and 14 deletions
|
|
@ -178,7 +178,6 @@ class SocketIO(object):
|
||||||
def _terminate_heartbeat(self):
|
def _terminate_heartbeat(self):
|
||||||
if self.heartbeat_terminator is not None:
|
if self.heartbeat_terminator is not None:
|
||||||
self.heartbeat_terminator.set();
|
self.heartbeat_terminator.set();
|
||||||
#time.sleep(self.session.heartbeat_interval);
|
|
||||||
self.heartbeat_thread.join();
|
self.heartbeat_thread.join();
|
||||||
|
|
||||||
def define(self, Namespace, path=''):
|
def define(self, Namespace, path=''):
|
||||||
|
|
@ -239,7 +238,7 @@ class SocketIO(object):
|
||||||
try:
|
try:
|
||||||
self.reconnect();
|
self.reconnect();
|
||||||
except ConnectionError as e:
|
except ConnectionError as e:
|
||||||
time.sleep(1);
|
time.sleep(RETRY_INTERVAL_IN_SECONDS);
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -234,8 +234,3 @@ def decode_packet(packet):
|
||||||
else:
|
else:
|
||||||
import ipdb; ipdb.set_trace();
|
import ipdb; ipdb.set_trace();
|
||||||
pass;
|
pass;
|
||||||
|
|
||||||
def encode_packet_string(code, path, data):
|
|
||||||
"""Encodes packet to be sent to socket.io server.
|
|
||||||
"""
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,15 @@ class _AbstractTransport(object):
|
||||||
responded = False;
|
responded = False;
|
||||||
while not responded:
|
while not responded:
|
||||||
for packet in self.recv_packet():
|
for packet in self.recv_packet():
|
||||||
_log.debug("[connect wait] Waiting for confirmation of connect to: %s" % path);
|
if not responded:
|
||||||
if (packet.type == PacketType.MESSAGE
|
_log.debug("[connect wait] Waiting for confirmation of connect to: %s" % path);
|
||||||
and packet.payload.type == MessageType.CONNECT
|
if (packet.type == PacketType.MESSAGE
|
||||||
and packet.payload.path == path):
|
and packet.payload.type == MessageType.CONNECT
|
||||||
_log.debug("[connect] Connected to path: %s" % path);
|
and packet.payload.path == path):
|
||||||
responded = True;
|
_log.debug("[connect] Connected to path: %s" % path);
|
||||||
|
responded = True;
|
||||||
|
else:
|
||||||
|
self._packets.append(packet);
|
||||||
else:
|
else:
|
||||||
self.send_packet(PacketType.OPEN, path, data);
|
self.send_packet(PacketType.OPEN, path, data);
|
||||||
|
|
||||||
|
|
@ -167,7 +170,7 @@ class WebsocketTransport(_AbstractTransport):
|
||||||
response = self._connection.recv();
|
response = self._connection.recv();
|
||||||
try:
|
try:
|
||||||
for packet in parser.decode_response(response):
|
for packet in parser.decode_response(response):
|
||||||
_log.debug('[websocket packet received] %s', str(packet));
|
_log.debug('[websocket] Packet received: %s', str(packet));
|
||||||
yield packet;
|
yield packet;
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
_log.warn('[packet error] %s', repr(response))
|
_log.warn('[packet error] %s', repr(response))
|
||||||
|
|
@ -207,6 +210,10 @@ class XHR_PollingTransport(_AbstractTransport):
|
||||||
@property
|
@property
|
||||||
def _params(self):
|
def _params(self):
|
||||||
return dict(t=int(time.time() * 1000))
|
return dict(t=int(time.time() * 1000))
|
||||||
|
|
||||||
|
def send_engineio_packet(self, packet, callback=None):
|
||||||
|
packet_text = packet.encode_as_string(for_websocket = False);
|
||||||
|
self.send(packet_text)
|
||||||
|
|
||||||
def send(self, packet_text):
|
def send(self, packet_text):
|
||||||
_log.debug("[xhr] send: " + str(packet_text));
|
_log.debug("[xhr] send: " + str(packet_text));
|
||||||
|
|
@ -233,6 +240,11 @@ class XHR_PollingTransport(_AbstractTransport):
|
||||||
if self._waiting:
|
if self._waiting:
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
# Yield any packets that were not processed before.
|
||||||
|
for packet in self._packets:
|
||||||
|
_log.debug('[xhr] Packet received: %s', str(packet));
|
||||||
|
yield packet;
|
||||||
|
|
||||||
self._waiting = True;
|
self._waiting = True;
|
||||||
response = _get_response(
|
response = _get_response(
|
||||||
self._http_session.get,
|
self._http_session.get,
|
||||||
|
|
@ -245,6 +257,7 @@ class XHR_PollingTransport(_AbstractTransport):
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for packet in parser.decode_response(response):
|
for packet in parser.decode_response(response):
|
||||||
|
_log.debug('[xhr] Packet received: %s', str(packet));
|
||||||
yield packet;
|
yield packet;
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue