def __init__(self,proxyURLs,appURL): websocket.enableTrace(False) self.admin_proxy = {} self.proxies = set() self.admins = set() self.adm_id = str(uuid.uuid4()) self.broadcasted = False # set TCP_NODELAY to 1 to disable Nagle sockopt = ((socket.IPPROTO_TCP, socket.TCP_NODELAY, DISABLE_NAGLE),) if not appURL.endswith("/"): appURL += "/" for proxy in proxyURLs: if not proxy.endswith("/"): proxy += "/" adminWS = websocket.WebSocketApp(proxy+"admin", on_open = self.Admin_on_open, on_message = self.Admin_on_message, on_error = self.Admin_on_error, on_close = self.Admin_on_close, sockopt=sockopt) proxyWS = websocket.WebSocketApp(proxy+"server", on_open = self.Proxy_on_open, on_message = self.Proxy_on_message, on_error = self.Proxy_on_error, on_close = self.Proxy_on_close, sockopt=sockopt) self.admin_proxy[adminWS] = proxyWS self.proxies.add(proxyWS) logger.debug("[ProxyConnector]: Connecting to Proxy in " + proxy) pws = Thread(target=proxyWS.run_forever) pws.daemon = True pws.start() logger.debug("[ProxyConnector]: Proxy Connected!") logger.debug("[ProxyConnector]: Connecting to Admin in " + proxy) aws = Thread(target=adminWS.run_forever) aws.daemon = True aws.start() logger.debug("[ProxyConnector]: Admin Connected!") self.app = websocket.WebSocketApp(appURL, on_open = self.App_on_open, on_message = self.App_on_message, on_error = self.App_on_error, on_close = self.App_on_close, sockopt=sockopt) # TODO: Fix this sleep, looks so bad :( time.sleep(1) logger.debug("[ProxyConnector]: Connecting to AppServer in " + appURL) t = Thread(target=self.app.run_forever) t.daemon = True t.start() logger.debug("[ProxyConnector]: App Server Connected!") self.manager = RMUVE_Manager() self.events = Event() self.client_proxy = {} self.client_admin = {}
def __init__(self, proxyURLs, appURL): websocket.enableTrace(True) """ TODO: Support more than one proxy! Right now only the last proxy in the list is used. """ for proxy in proxyURLs: self.proxyWS = websocket.WebSocketApp( proxy, on_open=self.Proxy_on_open, on_message=self.Proxy_on_message, on_error=self.Proxy_on_error, on_close=self.Proxy_on_close, ) logger.debug("[ProxyConnector]: Connecting to Proxy in " + proxy) Thread(target=self.proxyWS.run_forever).start() logger.debug("[ProxyConnector]: Proxy Connected!") url = urlparse(appURL) logger.debug("[ProxyConnector]: Connecting to AppServer in " + url.netloc) conn = httplib.HTTPConnection(url.netloc) conn.request("POST", "/socket.io/1/") resp = conn.getresponse() hskey = resp.read().split(":")[0] logger.debug("[ProxyConnector]: hskey is " + hskey) self.appWS = websocket.WebSocketApp( appURL + "/socket.io/1/websocket/" + hskey, on_open=self.App_on_open, on_message=self.App_on_message, on_error=self.App_on_error, on_close=self.App_on_close, ) time.sleep(1) Thread(target=self.appWS.run_forever).start() logger.debug("[ProxyConnector]: App Server Connected!") self.manager = RMUVE_Manager() self.events = Event()
def __init__(self, proxyURLs, appURL): websocket.enableTrace(True) """ TODO: Support more than one proxy! Right now only the last proxy in the list is used. """ for proxy in proxyURLs: self.proxyWS = websocket.WebSocketApp( proxy, on_open=self.Proxy_on_open, on_message=self.Proxy_on_message, on_error=self.Proxy_on_error, on_close=self.Proxy_on_close) logger.debug("[ProxyConnector]: Connecting to Proxy in " + proxy) Thread(target=self.proxyWS.run_forever).start() logger.debug("[ProxyConnector]: Proxy Connected!") url = urlparse(appURL) logger.debug("[ProxyConnector]: Connecting to AppServer in " + url.netloc) conn = httplib.HTTPConnection(url.netloc) conn.request('POST', '/socket.io/1/') resp = conn.getresponse() hskey = resp.read().split(':')[0] logger.debug("[ProxyConnector]: hskey is " + hskey) self.appWS = websocket.WebSocketApp(appURL + "/socket.io/1/websocket/" + hskey, on_open=self.App_on_open, on_message=self.App_on_message, on_error=self.App_on_error, on_close=self.App_on_close) time.sleep(1) Thread(target=self.appWS.run_forever).start() logger.debug("[ProxyConnector]: App Server Connected!") self.manager = RMUVE_Manager() self.events = Event()