From 1f02fcbc446182bb289eff76ce3bedda4c9e5fb6 Mon Sep 17 00:00:00 2001 From: lemon <961222258@qq.com> Date: Tue, 18 Feb 2020 13:43:30 +0800 Subject: [PATCH] 更新代码3 --- core/core.py | 21 ++++++++++++++------- lib/control_server.py | 17 ++++++++--------- lib/socket_.py | 28 ++-------------------------- 3 files changed, 24 insertions(+), 42 deletions(-) diff --git a/core/core.py b/core/core.py index 20be681..308ba68 100644 --- a/core/core.py +++ b/core/core.py @@ -21,6 +21,7 @@ monitor.version = settings.get_version() def server_replace(ws_url): '''新开一个socket尝试连接新地址,存储在临时变量里''' monitor._temp_socket = MessageSocketClient(connect_success, message_receive) + set_new_server_func(monitor._temp_socket) monitor._temp_socket.connect(ws_url, monitor._name, monitor._imei, reconnect=False) # 失败不重试 @@ -59,18 +60,24 @@ def connect_success(sock): monitor.bind(sock) # 替换Sock monitor.initialize() # 发送初始化消息 - monitor._socket.new_server_func = functools.partial( + + +def set_new_server_func(sock): + sock.new_server_func = functools.partial( control_server.post_terminal_info, - monitor._name, - sock.ws_url, - monitor.size, - monitor.version.name - ) # 设置上报服务器的函数 - monitor._socket.server_replace = server_replace # 设置开启新服务器的逻辑 + lambda: monitor._name, + lambda: sock.ws_url, + lambda: monitor.size, + lambda: monitor.version.name + ) + sock.server_replace = server_replace def run(): socket = MessageSocketClient(connect_success, message_receive) + set_new_server_func(socket) + monitor.bind(socket) + conf = settings.get_server() conf.update({'url': monitor._host, 'name': monitor._name, 'uuid': monitor._imei}) socket.connect(**conf) diff --git a/lib/control_server.py b/lib/control_server.py index c4ad02d..a4659a0 100644 --- a/lib/control_server.py +++ b/lib/control_server.py @@ -16,22 +16,21 @@ def get_init_name(): return "FBCHAT-{}".format(num) -def post_terminal_info(name, source_ws, num, version): +def post_terminal_info(name_f, source_ws_f, num_f, version_f): data = { - "name": name, - "ws": source_ws, - "num": num, - "version": version, + "name": name_f(), + "ws": source_ws_f(), + "num": num_f(), + "version": version_f(), } data.update(system_info.get()) global _host if not _host: _host = netutil.getip() data['ip'] = _host - print(data) try: r = requests.post(SERVER + '/post_terminal_info', json=data, timeout=1) - new_ws = r.json().get('data', {}).get('ws', source_ws) + new_ws = r.json().get('data', {}).get('ws', data['ws']) except: - new_ws = source_ws - return new_ws, not new_ws == source_ws + new_ws = data['ws'] + return new_ws, not new_ws == data['ws'] diff --git a/lib/socket_.py b/lib/socket_.py index 20528f8..ddb8f48 100644 --- a/lib/socket_.py +++ b/lib/socket_.py @@ -38,6 +38,7 @@ class WebSocketClient(object): self._io_loop = io_loop or ioloop.IOLoop.current() self._ws_connection = None self._connect_status = self.DISCONNECTED + self._clientname = self._clientuuid = None def connect(self, url): self._connect_status = self.CONNECTING @@ -128,7 +129,7 @@ class MessageSocketClient(WebSocketClient): self._io_loop = ioloop.IOLoop.current() self.ws_url = None self.auto_net = False - self.heartbeat_interval_in_secs = 3 + self.heartbeat_interval_in_secs = 30 super(MessageSocketClient, self).__init__(self._io_loop, self.connect_timeout, @@ -200,28 +201,3 @@ class MessageSocketClient(WebSocketClient): self.close("quit") for k, handler in self._later_handler.items(): self._io_loop.remove_timeout(handler) - - -if __name__ == '__main__': - - def success(sock): - global sockccc - sockccc = sock - - - def rec(msg): - if msg == 'quit': - sockccc.quit() - - - def interval(): - if sockccc: - sockccc.send({'test': time.time()}) - Timer(3, interval).start() - - - s1 = MessageSocketClient() - s1.connect('ws://localhost:10000', reconnect=False) - - Timer(2, interval).start() - ioloop.IOLoop.current().start() -- libgit2 0.24.0