Debug missed emit
This commit is contained in:
parent
5806f23492
commit
4fa6dcbe8d
3 changed files with 38 additions and 9 deletions
|
|
@ -50,9 +50,11 @@ class EngineIO(LoggingMixin):
|
|||
except AttributeError:
|
||||
pass
|
||||
self._engineIO_session = self._get_engineIO_session()
|
||||
self._negotiate_transport()
|
||||
self._transport_instance = self._negotiate_transport()
|
||||
self._connect_namespaces()
|
||||
self._connected = True
|
||||
for engineIO_packet in self._transport_instance.recv_packet():
|
||||
self._transport_instance.queue_packet(engineIO_packet)
|
||||
self._reset_heartbeat()
|
||||
return self._transport_instance
|
||||
|
||||
|
|
@ -74,9 +76,8 @@ class EngineIO(LoggingMixin):
|
|||
return parse_engineIO_session(engineIO_packet_data)
|
||||
|
||||
def _negotiate_transport(self):
|
||||
transport_name = 'xhr-polling'
|
||||
self._transport_instance = self._get_transport(transport_name)
|
||||
self._transport_name = transport_name
|
||||
self._transport_name = 'xhr-polling'
|
||||
return self._get_transport(self._transport_name)
|
||||
|
||||
def _reset_heartbeat(self):
|
||||
try:
|
||||
|
|
@ -158,6 +159,7 @@ class EngineIO(LoggingMixin):
|
|||
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
||||
|
||||
def _message(self, engineIO_packet_data):
|
||||
print('_message %s' % str(engineIO_packet_data))
|
||||
engineIO_packet_type = 4
|
||||
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
|
||||
|
||||
|
|
@ -208,6 +210,7 @@ class EngineIO(LoggingMixin):
|
|||
|
||||
def _process_packet(self, packet):
|
||||
engineIO_packet_type, engineIO_packet_data = packet
|
||||
print 'engineIO_packet_data=%s' % engineIO_packet_data
|
||||
# Launch callbacks
|
||||
namespace = self.get_namespace()
|
||||
try:
|
||||
|
|
@ -224,6 +227,8 @@ class EngineIO(LoggingMixin):
|
|||
raise PacketError(
|
||||
'unexpected engine.io packet type (%s)' % engineIO_packet_type)
|
||||
delegate(engineIO_packet_data, namespace._find_packet_callback)
|
||||
print '*** in engine.io, engineIO_packet_type=%s' % engineIO_packet_type
|
||||
print '*** in engine.io, engineIO_packet_data=%s' % engineIO_packet_data
|
||||
if engineIO_packet_type is 4:
|
||||
return engineIO_packet_data
|
||||
|
||||
|
|
@ -339,12 +344,19 @@ class SocketIO(EngineIO):
|
|||
pass
|
||||
|
||||
def emit(self, event, *args, **kw):
|
||||
print 'z1'
|
||||
path = kw.get('path', '')
|
||||
print 'z2'
|
||||
callback, args = find_callback(args, kw)
|
||||
print 'z3'
|
||||
ack_id = self._set_ack_callback(callback) if callback else None
|
||||
print 'z4'
|
||||
socketIO_packet_type = 2
|
||||
print 'z5'
|
||||
socketIO_packet_data = format_socketIO_packet_data(path, ack_id, args)
|
||||
print 'z6'
|
||||
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
||||
print 'z7'
|
||||
|
||||
def send(self, data='', callback=None):
|
||||
args = [data]
|
||||
|
|
@ -372,6 +384,7 @@ class SocketIO(EngineIO):
|
|||
|
||||
def _process_packet(self, packet):
|
||||
engineIO_packet_data = super(SocketIO, self)._process_packet(packet)
|
||||
print '*** in socket.io, engineIO_packet_data=%s' % engineIO_packet_data
|
||||
if engineIO_packet_data is None:
|
||||
return
|
||||
socketIO_packet_type = int(get_character(engineIO_packet_data, 0))
|
||||
|
|
|
|||
|
|
@ -39,7 +39,9 @@ class BaseMixin(object):
|
|||
def test_emit(self):
|
||||
'Emit'
|
||||
namespace = self.socketIO.define(Namespace)
|
||||
print 'a'
|
||||
self.socketIO.emit('emit')
|
||||
print 'b'
|
||||
self.socketIO.wait(self.wait_time_in_seconds)
|
||||
self.assertEqual(namespace.args_by_event, {
|
||||
'emit_response': (),
|
||||
|
|
@ -169,21 +171,26 @@ class Test_XHR_PollingTransport(BaseMixin, TestCase):
|
|||
class Namespace(LoggingNamespace):
|
||||
|
||||
def initialize(self):
|
||||
print('xxx initialize')
|
||||
self.called_on_disconnect = False
|
||||
self.args_by_event = {}
|
||||
self.response = None
|
||||
|
||||
def on_disconnect(self):
|
||||
print('xxx on_disconnect')
|
||||
self.called_on_disconnect = True
|
||||
|
||||
def on_wait_with_disconnect_response(self):
|
||||
print('xxx on_wait_with_disconnect_response')
|
||||
self.disconnect()
|
||||
|
||||
def on_event(self, event, *args):
|
||||
print('xxx on_event')
|
||||
callback, args = find_callback(args)
|
||||
if callback:
|
||||
callback(*args)
|
||||
self.args_by_event[event] = args
|
||||
|
||||
def on_message(self, data):
|
||||
print('xxx on_message')
|
||||
self.response = data
|
||||
|
|
|
|||
|
|
@ -16,13 +16,19 @@ class AbstractTransport(object):
|
|||
self.is_secure = is_secure
|
||||
self.url = url
|
||||
self.engineIO_session = engineIO_session
|
||||
self.engineIO_packets = []
|
||||
|
||||
def recv_packet(self):
|
||||
pass
|
||||
while self.engineIO_packets:
|
||||
yield self.engineIO_packets.pop(0)
|
||||
|
||||
def send_packet(self, engineIO_packet_type, engineIO_packet_data):
|
||||
pass
|
||||
|
||||
def queue_packet(self, engineIO_packet):
|
||||
print 'queue_packet %s' % str(engineIO_packet)
|
||||
self.engineIO_packets.append(engineIO_packet)
|
||||
|
||||
|
||||
class XHR_PollingTransport(AbstractTransport):
|
||||
|
||||
|
|
@ -47,18 +53,21 @@ class XHR_PollingTransport(AbstractTransport):
|
|||
self.kw_post = {}
|
||||
|
||||
def recv_packet(self):
|
||||
for engineIO_packet in super(XHR_PollingTransport, self).recv_packet():
|
||||
yield engineIO_packet
|
||||
params = dict(self.params)
|
||||
params['t'] = self.get_timestamp()
|
||||
params['t'] = self._get_timestamp()
|
||||
response = get_response(
|
||||
self.http_session.get,
|
||||
self.http_url,
|
||||
params=params,
|
||||
**self.kw_get)
|
||||
return decode_engineIO_content(response.content)
|
||||
for engineIO_packet in decode_engineIO_content(response.content):
|
||||
yield engineIO_packet
|
||||
|
||||
def send_packet(self, engineIO_packet_type, engineIO_packet_data):
|
||||
params = dict(self.params)
|
||||
params['t'] = self.get_timestamp()
|
||||
params['t'] = self._get_timestamp()
|
||||
response = get_response(
|
||||
self.http_session.post,
|
||||
self.http_url,
|
||||
|
|
@ -69,7 +78,7 @@ class XHR_PollingTransport(AbstractTransport):
|
|||
**self.kw_post)
|
||||
assert response.content == 'ok'
|
||||
|
||||
def get_timestamp(self):
|
||||
def _get_timestamp(self):
|
||||
timestamp = '%s-%s' % (int(time.time() * 1000), self.request_index)
|
||||
self.request_index += 1
|
||||
return timestamp
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue