Fixes #25
This commit is contained in:
parent
13b482e075
commit
65c4160c8e
3 changed files with 25 additions and 19 deletions
|
|
@ -1 +1,2 @@
|
|||
# America/Los_Angeles 11/3/2013
|
||||
Add test for server ack callback in namespace
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ class SocketIO(object):
|
|||
code, packet_id, path, data = packet
|
||||
namespace = self.get_namespace(path)
|
||||
delegate = self._get_delegate(code)
|
||||
delegate(packet_id, data, namespace._find_event_callback)
|
||||
delegate(packet, namespace._find_event_callback)
|
||||
|
||||
def get_namespace(self, path=''):
|
||||
try:
|
||||
|
|
@ -274,36 +274,40 @@ class SocketIO(object):
|
|||
except KeyError:
|
||||
raise PacketError('unexpected code (%s)' % code)
|
||||
|
||||
def _on_disconnect(self, packet_id, data, find_event_callback):
|
||||
def _on_disconnect(self, packet, find_event_callback):
|
||||
find_event_callback('disconnect')()
|
||||
|
||||
def _on_connect(self, packet_id, data, find_event_callback):
|
||||
def _on_connect(self, packet, find_event_callback):
|
||||
find_event_callback('connect')()
|
||||
|
||||
def _on_heartbeat(self, packet_id, data, find_event_callback):
|
||||
def _on_heartbeat(self, packet, find_event_callback):
|
||||
find_event_callback('heartbeat')()
|
||||
|
||||
def _on_message(self, packet_id, data, find_event_callback):
|
||||
def _on_message(self, packet, find_event_callback):
|
||||
code, packet_id, path, data = packet
|
||||
args = [data]
|
||||
if packet_id:
|
||||
args.append(self._prepare_to_send_ack(packet_id))
|
||||
args.append(self._prepare_to_send_ack(path, packet_id))
|
||||
find_event_callback('message')(*args)
|
||||
|
||||
def _on_json(self, packet_id, data, find_event_callback):
|
||||
def _on_json(self, packet, find_event_callback):
|
||||
code, packet_id, path, data = packet
|
||||
args = [json.loads(data)]
|
||||
if packet_id:
|
||||
args.append(self._prepare_to_send_ack(packet_id))
|
||||
args.append(self._prepare_to_send_ack(path, packet_id))
|
||||
find_event_callback('message')(*args)
|
||||
|
||||
def _on_event(self, packet_id, data, find_event_callback):
|
||||
def _on_event(self, packet, find_event_callback):
|
||||
code, packet_id, path, data = packet
|
||||
value_by_name = json.loads(data)
|
||||
event = value_by_name['name']
|
||||
args = value_by_name.get('args', [])
|
||||
if packet_id:
|
||||
args.append(self._prepare_to_send_ack(packet_id))
|
||||
args.append(self._prepare_to_send_ack(path, packet_id))
|
||||
find_event_callback(event)(*args)
|
||||
|
||||
def _on_ack(self, packet_id, data, find_event_callback):
|
||||
def _on_ack(self, packet, find_event_callback):
|
||||
code, packet_id, path, data = packet
|
||||
data_parts = data.split('+', 1)
|
||||
packet_id = data_parts[0]
|
||||
try:
|
||||
|
|
@ -313,16 +317,17 @@ class SocketIO(object):
|
|||
args = json.loads(data_parts[1]) if len(data_parts) > 1 else []
|
||||
ack_callback(*args)
|
||||
|
||||
def _on_error(self, packet_id, data, find_event_callback):
|
||||
def _on_error(self, packet, find_event_callback):
|
||||
code, packet_id, path, data = packet
|
||||
reason, advice = data.split('+', 1)
|
||||
find_event_callback('error')(reason, advice)
|
||||
|
||||
def _on_noop(self, packet_id, data, find_event_callback):
|
||||
def _on_noop(self, packet, find_event_callback):
|
||||
find_event_callback('noop')()
|
||||
|
||||
def _prepare_to_send_ack(self, packet_id):
|
||||
def _prepare_to_send_ack(self, path, packet_id):
|
||||
'Return function that acknowledges the server'
|
||||
return lambda *args: self._transport.ack(packet_id, *args)
|
||||
return lambda *args: self._transport.ack(path, packet_id, *args)
|
||||
|
||||
|
||||
def find_callback(args, kw=None):
|
||||
|
|
|
|||
|
|
@ -49,16 +49,16 @@ class _AbstractTransport(object):
|
|||
data = json.dumps(dict(name=event, args=args), ensure_ascii=False)
|
||||
self.send_packet(5, path, data, callback)
|
||||
|
||||
def ack(self, packet_id, *args):
|
||||
def ack(self, path, packet_id, *args):
|
||||
packet_id = packet_id.rstrip('+')
|
||||
data = '%s+%s' % (
|
||||
packet_id,
|
||||
json.dumps(args, ensure_ascii=False),
|
||||
) if args else packet_id
|
||||
self.send_packet(6, data=data)
|
||||
self.send_packet(6, path, data)
|
||||
|
||||
def noop(self):
|
||||
self.send_packet(8)
|
||||
def noop(self, path=''):
|
||||
self.send_packet(8, path)
|
||||
|
||||
def send_packet(self, code, path='', data='', callback=None):
|
||||
packet_id = self.set_ack_callback(callback) if callback else ''
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue