Пример #1
0
 def reply_client(client: websocket.WebSocketHandler,
                  data: Union[bytes, str]) -> None:
     try:
         client.write_message(
             data if isinstance(data, bytes) else data.encode("utf-8"))
     except websocket.WebSocketClosedError as e:
         logger.warning("Tried to reply to a closed connection")
Пример #2
0
def unlocked():
    """
    Context manager which unlocks a Document and dispatches
    ModelChangedEvents triggered in the context body to all sockets
    on current sessions.
    """
    curdoc = state.curdoc
    if curdoc is None or curdoc.session_context is None or curdoc.session_context.session is None:
        yield
        return
    from tornado.websocket import WebSocketHandler
    connections = curdoc.session_context.session._subscribed_connections

    hold = curdoc.callbacks.hold_value
    if hold:
        old_events = list(curdoc.callbacks._held_events)
    else:
        old_events = []
        curdoc.hold()
    try:
        yield

        locked = False
        for conn in connections:
            socket = conn._socket
            if hasattr(socket,
                       'write_lock') and socket.write_lock._block._value == 0:
                locked = True
                break

        events = []
        for event in curdoc.callbacks._held_events:
            if not isinstance(
                    event, ModelChangedEvent) or event in old_events or locked:
                events.append(event)
                continue
            for conn in connections:
                socket = conn._socket
                ws_conn = getattr(socket, 'ws_connection', False)
                if (not hasattr(socket, 'write_message') or ws_conn is None
                        or (ws_conn and ws_conn.is_closing())):
                    continue
                msg = conn.protocol.create('PATCH-DOC', [event])
                WebSocketHandler.write_message(socket, msg.header_json)
                WebSocketHandler.write_message(socket, msg.metadata_json)
                WebSocketHandler.write_message(socket, msg.content_json)
                for header, payload in msg._buffers:
                    WebSocketHandler.write_message(socket, header)
                    WebSocketHandler.write_message(socket,
                                                   payload,
                                                   binary=True)
        curdoc.callbacks._held_events = events
    finally:
        if hold:
            return
        try:
            curdoc.unhold()
        except RuntimeError:
            curdoc.add_next_tick_callback(
                partial(_dispatch_events, curdoc, events))
Пример #3
0
 def _execute(self, transforms, *args, **kwargs):
     ''' select base handler for self '''
     with LogicContext():
         if isinstance(self, WebSocketHandler):
             WebSocketHandler._execute(self, transforms, *args, **kwargs)
         elif isinstance(self, RequestHandler):
             RequestHandler._execute(self, transforms, *args, **kwargs)
Пример #4
0
 def __init__(self, *args, **kw):
     print 'Presence handler created'
     WebSocketHandler.__init__(self, *args, **kw)
     self._user = None
     self._closed = False
     IOLoop.instance().add_timeout(time.time() + 5,
                                   self._check_notifications)
Пример #5
0
	def __init__(self, application, request):
		WebSocketHandler.__init__(self, application, request)
		self._current_user = None
		self.middleware_manager = MiddlewareManager(self)
		self.db = Mongo.db.ui #@UndefinedVariable
		#run all middleware request hooks
		self.middleware_manager.run_request_hooks()
Пример #6
0
 def __init__(self, *args, **kwds):
 #---------------------------------
   WebSocketHandler.__init__(self, *args, **kwds)  ## Can't use super() as class is not
                                                   ## correctly initialised.
   self._parser = stream.BlockParser(self.got_block, check=stream.Checksum.CHECK)
   self._repo = options.repository
   self._capabilities = [ ]
Пример #7
0
 def __init__(self, application, request):
     WebSocketHandler.__init__(self, application, request)
     self._current_user = None
     self.middleware_manager = MiddlewareManager(self)
     self.db = Mongo.db.ui  #@UndefinedVariable
     #run all middleware request hooks
     self.middleware_manager.run_request_hooks()
Пример #8
0
 def __init__(self, *args, **kw):
     print 'Presence handler created'
     WebSocketHandler.__init__(self, *args, **kw)
     self._user = None
     self._closed = False
     IOLoop.instance().add_timeout(time.time() + 5,
                                   self._check_notifications)
Пример #9
0
 def _execute(self, transforms, *args, **kwargs):
     ''' select base handler for self '''
     with LogicContext():
         get_context().handler = self
         if isinstance(self, WebSocketHandler):
             WebSocketHandler._execute(self, transforms, *args, **kwargs)
         elif isinstance(self, RequestHandler):
             RequestHandler._execute(self, transforms, *args, **kwargs)
Пример #10
0
 def __init__(self, application, request, **kwargs):
     WebSocketHandler.__init__(self, application, request, **kwargs)
     self.active_game = None
     self.player_number = None
     self.ping_interval = 10
     self.message_handlers = {
         'move': self.handle_move,
         'chat': self.handle_chat,
         'flee': self.handle_flee
     }
Пример #11
0
    def _execute(self, *args, **kwargs):
        """Does the exact same thing like WebSocketHandler._execute() for GET
        requests. Otherwise, acts like RequestHandler.
        """
        if self.request.method == 'GET':
            # dispatch to WebSocketHandler
            WebSocketHandler._execute(self, *args, **kwargs)
        else:
            # remap unsupported WebSocketHandler methods back to RequestHandler
            # the __get__(self, DualHandler) trick is used to bind the methods
            # back to the object, otherwise it's unbound
            for method in ["write", "redirect", "set_header", "send_error",
                           "set_cookie", "set_status", "flush", "finish"]:
                    setattr(self, method,
                            getattr(RequestHandler, method).__get__(
                                    self, DualHandler))
 
            # dispatch to RequestHandler
            RequestHandler._execute(self, *args, **kwargs)
Пример #12
0
 def __init__(self, application, request):
     WebSocketHandler.__init__(self, application, request)
     HTTPHandler.__init__(self, application, request)
Пример #13
0
 def close(self):
     """ Remove my player and close socket. """
     self._player = None
     WebSocketHandler.close(self)
Пример #14
0
 def __init__(self, *args, **kw):
     WebSocketHandler.__init__(self, *args, **kw)
     self.application = None
Пример #15
0
 def _execute(self, transforms, *args, **kwargs):
     with LogicContext():
         if isinstance(self, WebSocketHandler):
             WebSocketHandler._execute(self, transforms, *args, **kwargs)
         elif isinstance(self, RequestHandler):
             RequestHandler._execute(self, transforms, *args, **kwargs)
Пример #16
0
 def __init__(self, *args, **kwargs):
     self.ioloop = IOLoop.instance()
     WebSocketHandler.__init__(self, *args,**kwargs)
Пример #17
0
 def close(self, *args):
     try:
         WebSocketHandler.close(self, *args)
     except TypeError:
         WebSocketHandler.close(self)  # older Tornado
Пример #18
0
 def __init__(self, rpc_handler, *args, **kwargs):
     if not issubclass(rpc_handler, RpcHandler):
         raise Exception("Argument rpc_handler must be a subclass of " +
             "RpcHandler")
     self.rpc_handler = rpc_handler()
     WebSocketHandler.__init__(self, *args, **kwargs)
Пример #19
0
    def __init__(self, *args, **kwargs):

        print('>>> create new handler instance')
        return WebSocketHandler.__init__(self, *args, **kwargs)
Пример #20
0
 def close(self, *args):
 #----------------------
   if self.ws_connection is not None:
     WebSocketHandler.close(self, *args)
 def get(self, *args, **kwargs):
     WebSocketHandler.get(self, *args, **kwargs)
Пример #22
0
 def __init__(self, application, request, **kwargs):
     WebSocketHandler.__init__(self, application, request, **kwargs)
     self.io_loop = IOLoop.instance()
     self.pub = MQPub(zmq.Context(), 'admin')
 def __init__(self, *args, **kw):
     WebSocketHandler.__init__(self, *args, **kw)
     self.application = None
Пример #24
0
 def log_exception(self, typ, value, tb):
     """Logs uncaught exceptions. This overrides the method in
     WebSocketHandler not to log exceptions derived from Ret.
     """
     if not isinstance(value, Ret):
         WebSocketHandler.log_exception(self, typ, value, tb)
Пример #25
0
 def __init__(self, application, request, **kwargs):
     WebSocketHandler.__init__(self, application, request, **kwargs)
     self.io_loop = IOLoop.instance()
Пример #26
0
 def __init__(self, rpc_handler, *args, **kwargs):
     if not issubclass(rpc_handler, RpcHandler):
         raise Exception("Argument rpc_handler must be a subclass of " +
                         "RpcHandler")
     self.rpc_handler = rpc_handler()
     WebSocketHandler.__init__(self, *args, **kwargs)
Пример #27
0
 def close(self):
     """ Remove my player and close socket. """
     self._player = None
     WebSocketHandler.close(self)
Пример #28
0
    def __init__(self, application, request, **kwds):
        ControllerAddon.__init__(self, application, request, **kwds)
        WebSocketHandler.__init__(self, application, request, **kwds)

        self.io_loop = IOLoop.current(False)
Пример #29
0
 def __init__(self, application, request, **kwargs):
     WebSocketHandler.__init__(self, application, request, **kwargs)
     self._player = None
Пример #30
0
    def __init__(self, application, request, **kwargs):
        WebSocketHandler.__init__(self, application, request, **kwargs)

        self.io_loop = IOLoop.current()
        self.logger = logging.getLogger('tornado.application')
        self.user_id = None
Пример #31
0
 def __init__(self, *args, **kwargs):
     self.ioloop = IOLoop.instance()
     WebSocketHandler.__init__(self, *args, **kwargs)
Пример #32
0
 def close(self):
     WebSocketHandler.close(self)
Пример #33
0
    def __init__(self, *args, **kwargs):
        BaseWebSocket.__init__(self, *args, **kwargs)

        self._session = None

        self._channel_table[self.__hash__()] = self
Пример #34
0
 def __init__(self, application, request, **kwargs):
     WebSocketHandler.__init__(self, application, request, **kwargs)
Пример #35
0
 def initialize(self, worker=True):
     WebSocketHandler.initialize(self)
     self.worker = worker
     self.callbacks = {}
     self.requests = []
     self.closing = False
Пример #36
0
 def __init__(self, application, request, **kwargs):
     WebSocketHandler.__init__(self, application, request, **kwargs)
     self.login = False
Пример #37
0
 def __init__(self, server, *args):
     WebSocketHandler.__init__(self, *args)
     self.server = server
Пример #38
0
 def _execute(self, transforms, *args, **kwargs):
     with LogicContext(handler=self):
         if isinstance(self,WebSocketHandler):
             WebSocketHandler._execute(self,transforms, *args, **kwargs)
         elif isinstance(self,RequestHandler):
             RequestHandler._execute(self,transforms, *args, **kwargs)
Пример #39
0
 def __init__(self, application, request):
     WebSocketHandler.__init__(self, application, request)
     self.id = str(random.random())[2:]