Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

48 строки
2.0KB

  1. from socketio import Namespace as _Namespace
  2. class Namespace(_Namespace):
  3. def __init__(self, namespace=None):
  4. super(Namespace, self).__init__(namespace)
  5. self.socketio = None
  6. def _set_socketio(self, socketio):
  7. self.socketio = socketio
  8. def trigger_event(self, event, *args):
  9. """Dispatch an event to the proper handler method.
  10. In the most common usage, this method is not overloaded by subclasses,
  11. as it performs the routing of events to methods. However, this
  12. method can be overriden if special dispatching rules are needed, or if
  13. having a single method that catches all events is desired.
  14. """
  15. handler_name = 'on_' + event
  16. if not hasattr(self, handler_name):
  17. # there is no handler for this event, so we ignore it
  18. return
  19. handler = getattr(self, handler_name)
  20. return self.socketio._handle_event(handler, event, self.namespace,
  21. *args)
  22. def emit(self, event, data=None, room=None, include_self=True,
  23. namespace=None, callback=None):
  24. """Emit a custom event to one or more connected clients."""
  25. return self.socketio.emit(event, data, room=room,
  26. include_self=include_self,
  27. namespace=namespace or self.namespace,
  28. callback=callback)
  29. def send(self, data, room=None, include_self=True, namespace=None,
  30. callback=None):
  31. """Send a message to one or more connected clients."""
  32. return self.socketio.send(data, room=room, include_self=include_self,
  33. namespace=namespace or self.namespace,
  34. callback=callback)
  35. def close_room(self, room, namespace=None):
  36. """Close a room."""
  37. return self.socketio.close_room(room=room,
  38. namespace=namespace or self.namespace)