Example #1
0
 def __init__(self, url=None, ssl_opts=None, connect_immediately=True, max_wait=2):
     self.ws = None
     self.url = url or 'ws://127.0.0.1:{}/wsrpc'.format(config['cherrypy']['server.socket_port'])
     self._lock = RLock()
     self._callbacks = {}
     self._counter = count()
     self.ssl_opts = ssl_opts
     self._reconnect_attempts = 0
     self._last_poll, self._last_reconnect_attempt = None, None
     self._dispatcher = Caller(self._dispatch, threads=1)
     self._checker = DaemonTask(self._check, interval=1)
     if connect_immediately:
         self.connect(max_wait=max_wait)
Example #2
0
        pass


class WebSocketChecker(WebSocketTool):
    def __init__(self):
        cherrypy.Tool.__init__(self, 'before_handler', self.upgrade)

    def upgrade(self, **kwargs):
        try:
            kwargs['handler_cls'].check_authentication()
        except:
            raise cherrypy.HTTPError(
                401,
                'You must be logged in to establish a websocket connection.')
        else:
            return WebSocketTool.upgrade(self, **kwargs)


cherrypy.tools.websockets = WebSocketChecker()

websocket_plugin = WebSocketPlugin(cherrypy.engine)
if hasattr(WebSocketPlugin.start, '__func__'):
    WebSocketPlugin.start.__func__.priority = 66
else:
    WebSocketPlugin.start.priority = 66
websocket_plugin.subscribe()

broadcaster = Caller(WebSocketDispatcher.broadcast)
responder = Caller(WebSocketDispatcher.handle_message,
                   threads=config['ws.thread_pool'])