cont_socketio = 'https://foo.bar'
cont_namespace = '/comments'
cont_connect_sleep = 0.1
cont_connect_iterations = 50
cont_query_sleep = 0.1
cont_query_iterations = 100
class SIOClient:
def __init__(self):
#self.sio = socketio.Client(logger=True, engineio_logger=True)
self.sio = socketio.Client()
self.ready = False
def handle():
self.ready = True
self.sio.on("connect", handle, namespace=cont_namespace)
self.sio.connect(cont_socketio, namespaces=[cont_namespace], transports=['websocket'])
i = 0
while i<cont_connect_iterations and not self.ready:
i = i+1
self.sio.sleep(cont_connect_sleep)
assert self.ready
def query(self, method, data):
self.result = None
def handle(data):
self.result = data
self.sio.on(method, handle, namespace=cont_namespace)
self.sio.emit(method, data, namespace=cont_namespace)
i = 0
while i<cont_query_iterations and not self.result:
i += 1
self.sio.sleep(cont_query_sleep)
assert self.result
return self.result
def quit(self):
if self.ready:
self.sio.disconnect()
self.sio.wait()