+ def connect(self):
+
+ def handle_recv(msg):
+ if msg == 'BYE':
+ self.socket.close()
+ else:
+ self.queue.put(msg)
+
+ self.log_msg('@ attempting connect')
+ socket_client_class = PlomSocketClient
+ if self.host.startswith('ws://') or self.host.startswith('wss://'):
+ socket_client_class = WebSocketClient
+ try:
+ self.socket = socket_client_class(handle_recv, self.host)
+ self.socket_thread = threading.Thread(target=self.socket.run)
+ self.socket_thread.start()
+ self.disconnected = False
+ self.socket.send('TASKS')
+ self.switch_mode('login')
+ except ConnectionRefusedError:
+ self.log_msg('@ server connect failure')
+ self.disconnected = True
+ self.switch_mode('waiting_for_server')
+ self.do_refresh = True
+
+ def reconnect(self):
+ self.log_msg('@ attempting reconnect')
+ self.send('QUIT')
+ time.sleep(0.1) # FIXME necessitated by some some strange SSL race
+ # conditions with ws4py, find out what exactly
+ self.switch_mode('waiting_for_server')
+ self.connect()
+