Fix emit bug
This commit is contained in:
parent
4fa6dcbe8d
commit
3d8efe0eb4
3 changed files with 20 additions and 29 deletions
|
|
@ -21,7 +21,7 @@ LoggingNamespace = LoggingSocketIONamespace
|
||||||
class EngineIO(LoggingMixin):
|
class EngineIO(LoggingMixin):
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, host, port=None, Namespace=None,
|
self, host, port=None, Namespace=EngineIONamespace,
|
||||||
wait_for_connection=True, transports=TRANSPORTS,
|
wait_for_connection=True, transports=TRANSPORTS,
|
||||||
resource='engine.io', **kw):
|
resource='engine.io', **kw):
|
||||||
self._is_secure, self._url = parse_host(host, port, resource)
|
self._is_secure, self._url = parse_host(host, port, resource)
|
||||||
|
|
@ -30,32 +30,29 @@ class EngineIO(LoggingMixin):
|
||||||
self._http_session = prepare_http_session(kw)
|
self._http_session = prepare_http_session(kw)
|
||||||
self._log_name = self._url
|
self._log_name = self._url
|
||||||
self._wants_to_close = False
|
self._wants_to_close = False
|
||||||
|
self._connected = False
|
||||||
if Namespace:
|
if Namespace:
|
||||||
self.define(Namespace)
|
self.define(Namespace)
|
||||||
|
# self._transport
|
||||||
|
|
||||||
# Connect
|
# Connect
|
||||||
|
|
||||||
@property
|
|
||||||
def connected(self):
|
|
||||||
try:
|
|
||||||
return self._connected
|
|
||||||
except AttributeError:
|
|
||||||
return False
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def _transport(self):
|
def _transport(self):
|
||||||
try:
|
print 't1'
|
||||||
if self.connected:
|
if self._connected:
|
||||||
return self._transport_instance
|
return self._transport_instance
|
||||||
except AttributeError:
|
print 't2'
|
||||||
pass
|
|
||||||
self._engineIO_session = self._get_engineIO_session()
|
self._engineIO_session = self._get_engineIO_session()
|
||||||
|
print 't3'
|
||||||
self._transport_instance = self._negotiate_transport()
|
self._transport_instance = self._negotiate_transport()
|
||||||
|
print 't4'
|
||||||
self._connect_namespaces()
|
self._connect_namespaces()
|
||||||
|
print 't5'
|
||||||
self._connected = True
|
self._connected = True
|
||||||
for engineIO_packet in self._transport_instance.recv_packet():
|
print 't6 starting heartbeat'
|
||||||
self._transport_instance.queue_packet(engineIO_packet)
|
|
||||||
self._reset_heartbeat()
|
self._reset_heartbeat()
|
||||||
|
print 't7'
|
||||||
return self._transport_instance
|
return self._transport_instance
|
||||||
|
|
||||||
def _get_engineIO_session(self):
|
def _get_engineIO_session(self):
|
||||||
|
|
@ -144,7 +141,7 @@ class EngineIO(LoggingMixin):
|
||||||
|
|
||||||
def _close(self):
|
def _close(self):
|
||||||
self._wants_to_close = True
|
self._wants_to_close = True
|
||||||
if not self.connected:
|
if not self._connected:
|
||||||
return
|
return
|
||||||
engineIO_packet_type = 1
|
engineIO_packet_type = 1
|
||||||
self._transport.send_packet(engineIO_packet_type, '')
|
self._transport.send_packet(engineIO_packet_type, '')
|
||||||
|
|
@ -274,7 +271,7 @@ class SocketIO(EngineIO):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, host, port=None, Namespace=None,
|
self, host, port=None, Namespace=SocketIONamespace,
|
||||||
wait_for_connection=True, transports=TRANSPORTS,
|
wait_for_connection=True, transports=TRANSPORTS,
|
||||||
resource='socket.io', **kw):
|
resource='socket.io', **kw):
|
||||||
self._namespace_by_path = {}
|
self._namespace_by_path = {}
|
||||||
|
|
@ -329,7 +326,7 @@ class SocketIO(EngineIO):
|
||||||
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
||||||
|
|
||||||
def disconnect(self, path=''):
|
def disconnect(self, path=''):
|
||||||
if not self.connected:
|
if not self._connected:
|
||||||
return
|
return
|
||||||
if path:
|
if path:
|
||||||
socketIO_packet_type = 1
|
socketIO_packet_type = 1
|
||||||
|
|
@ -351,10 +348,11 @@ class SocketIO(EngineIO):
|
||||||
print 'z3'
|
print 'z3'
|
||||||
ack_id = self._set_ack_callback(callback) if callback else None
|
ack_id = self._set_ack_callback(callback) if callback else None
|
||||||
print 'z4'
|
print 'z4'
|
||||||
|
args = [event] + list(args)
|
||||||
socketIO_packet_type = 2
|
socketIO_packet_type = 2
|
||||||
print 'z5'
|
print 'z5 path=%s ack_id=%s args=%s' % (path, ack_id, str(args))
|
||||||
socketIO_packet_data = format_socketIO_packet_data(path, ack_id, args)
|
socketIO_packet_data = format_socketIO_packet_data(path, ack_id, args)
|
||||||
print 'z6'
|
print 'z6 emitting %s' % str(socketIO_packet_data)
|
||||||
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
self._message(str(socketIO_packet_type) + socketIO_packet_data)
|
||||||
print 'z7'
|
print 'z7'
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ def format_socketIO_packet_data(path=None, ack_id=None, args=None):
|
||||||
socketIO_packet_data = str(ack_id) + socketIO_packet_data
|
socketIO_packet_data = str(ack_id) + socketIO_packet_data
|
||||||
if path:
|
if path:
|
||||||
socketIO_packet_data = path + ',' + socketIO_packet_data
|
socketIO_packet_data = path + ',' + socketIO_packet_data
|
||||||
|
print 'format_socketIO_packet_data = %s' % socketIO_packet_data
|
||||||
return socketIO_packet_data
|
return socketIO_packet_data
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,19 +16,13 @@ class AbstractTransport(object):
|
||||||
self.is_secure = is_secure
|
self.is_secure = is_secure
|
||||||
self.url = url
|
self.url = url
|
||||||
self.engineIO_session = engineIO_session
|
self.engineIO_session = engineIO_session
|
||||||
self.engineIO_packets = []
|
|
||||||
|
|
||||||
def recv_packet(self):
|
def recv_packet(self):
|
||||||
while self.engineIO_packets:
|
pass
|
||||||
yield self.engineIO_packets.pop(0)
|
|
||||||
|
|
||||||
def send_packet(self, engineIO_packet_type, engineIO_packet_data):
|
def send_packet(self, engineIO_packet_type, engineIO_packet_data):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def queue_packet(self, engineIO_packet):
|
|
||||||
print 'queue_packet %s' % str(engineIO_packet)
|
|
||||||
self.engineIO_packets.append(engineIO_packet)
|
|
||||||
|
|
||||||
|
|
||||||
class XHR_PollingTransport(AbstractTransport):
|
class XHR_PollingTransport(AbstractTransport):
|
||||||
|
|
||||||
|
|
@ -53,8 +47,6 @@ class XHR_PollingTransport(AbstractTransport):
|
||||||
self.kw_post = {}
|
self.kw_post = {}
|
||||||
|
|
||||||
def recv_packet(self):
|
def recv_packet(self):
|
||||||
for engineIO_packet in super(XHR_PollingTransport, self).recv_packet():
|
|
||||||
yield engineIO_packet
|
|
||||||
params = dict(self.params)
|
params = dict(self.params)
|
||||||
params['t'] = self._get_timestamp()
|
params['t'] = self._get_timestamp()
|
||||||
response = get_response(
|
response = get_response(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue