codekingpro/portable-devtools
114k
1from socketio import Namespace as _Namespace2 3 4class Namespace(_Namespace):5 def __init__(self, namespace=None):6 super(Namespace, self).__init__(namespace)7 self.socketio = None8 9 def _set_socketio(self, socketio):10 self.socketio = socketio11 12 def trigger_event(self, event, *args):13 """Dispatch an event to the proper handler method.14 15 In the most common usage, this method is not overloaded by subclasses,16 as it performs the routing of events to methods. However, this17 method can be overridden if special dispatching rules are needed, or if18 having a single method that catches all events is desired.19 """20 handler_name = 'on_' + event21 if not hasattr(self, handler_name):22 # there is no handler for this event, so we ignore it23 return24 handler = getattr(self, handler_name)25 return self.socketio._handle_event(handler, event, self.namespace,26 *args)27 28 def emit(self, event, data=None, room=None, include_self=True,29 namespace=None, callback=None):30 """Emit a custom event to one or more connected clients."""31 return self.socketio.emit(event, data, room=room,32 include_self=include_self,33 namespace=namespace or self.namespace,34 callback=callback)35 36 def send(self, data, room=None, include_self=True, namespace=None,37 callback=None):38 """Send a message to one or more connected clients."""39 return self.socketio.send(data, room=room, include_self=include_self,40 namespace=namespace or self.namespace,41 callback=callback)42 43 def close_room(self, room, namespace=None):44 """Close a room."""45 return self.socketio.close_room(room=room,46 namespace=namespace or self.namespace)47 