正在显示
3 个修改的文件
包含
24 行增加
和
42 行删除
| @@ -21,6 +21,7 @@ monitor.version = settings.get_version() | @@ -21,6 +21,7 @@ monitor.version = settings.get_version() | ||
| 21 | def server_replace(ws_url): | 21 | def server_replace(ws_url): |
| 22 | '''新开一个socket尝试连接新地址,存储在临时变量里''' | 22 | '''新开一个socket尝试连接新地址,存储在临时变量里''' |
| 23 | monitor._temp_socket = MessageSocketClient(connect_success, message_receive) | 23 | monitor._temp_socket = MessageSocketClient(connect_success, message_receive) |
| 24 | + set_new_server_func(monitor._temp_socket) | ||
| 24 | monitor._temp_socket.connect(ws_url, monitor._name, monitor._imei, reconnect=False) # 失败不重试 | 25 | monitor._temp_socket.connect(ws_url, monitor._name, monitor._imei, reconnect=False) # 失败不重试 |
| 25 | 26 | ||
| 26 | 27 | ||
| @@ -59,18 +60,24 @@ def connect_success(sock): | @@ -59,18 +60,24 @@ def connect_success(sock): | ||
| 59 | 60 | ||
| 60 | monitor.bind(sock) # 替换Sock | 61 | monitor.bind(sock) # 替换Sock |
| 61 | monitor.initialize() # 发送初始化消息 | 62 | monitor.initialize() # 发送初始化消息 |
| 62 | - monitor._socket.new_server_func = functools.partial( | 63 | + |
| 64 | + | ||
| 65 | +def set_new_server_func(sock): | ||
| 66 | + sock.new_server_func = functools.partial( | ||
| 63 | control_server.post_terminal_info, | 67 | control_server.post_terminal_info, |
| 64 | - monitor._name, | ||
| 65 | - sock.ws_url, | ||
| 66 | - monitor.size, | ||
| 67 | - monitor.version.name | ||
| 68 | - ) # 设置上报服务器的函数 | ||
| 69 | - monitor._socket.server_replace = server_replace # 设置开启新服务器的逻辑 | 68 | + lambda: monitor._name, |
| 69 | + lambda: sock.ws_url, | ||
| 70 | + lambda: monitor.size, | ||
| 71 | + lambda: monitor.version.name | ||
| 72 | + ) | ||
| 73 | + sock.server_replace = server_replace | ||
| 70 | 74 | ||
| 71 | 75 | ||
| 72 | def run(): | 76 | def run(): |
| 73 | socket = MessageSocketClient(connect_success, message_receive) | 77 | socket = MessageSocketClient(connect_success, message_receive) |
| 78 | + set_new_server_func(socket) | ||
| 79 | + monitor.bind(socket) | ||
| 80 | + | ||
| 74 | conf = settings.get_server() | 81 | conf = settings.get_server() |
| 75 | conf.update({'url': monitor._host, 'name': monitor._name, 'uuid': monitor._imei}) | 82 | conf.update({'url': monitor._host, 'name': monitor._name, 'uuid': monitor._imei}) |
| 76 | socket.connect(**conf) | 83 | socket.connect(**conf) |
| @@ -16,22 +16,21 @@ def get_init_name(): | @@ -16,22 +16,21 @@ def get_init_name(): | ||
| 16 | return "FBCHAT-{}".format(num) | 16 | return "FBCHAT-{}".format(num) |
| 17 | 17 | ||
| 18 | 18 | ||
| 19 | -def post_terminal_info(name, source_ws, num, version): | 19 | +def post_terminal_info(name_f, source_ws_f, num_f, version_f): |
| 20 | data = { | 20 | data = { |
| 21 | - "name": name, | ||
| 22 | - "ws": source_ws, | ||
| 23 | - "num": num, | ||
| 24 | - "version": version, | 21 | + "name": name_f(), |
| 22 | + "ws": source_ws_f(), | ||
| 23 | + "num": num_f(), | ||
| 24 | + "version": version_f(), | ||
| 25 | } | 25 | } |
| 26 | data.update(system_info.get()) | 26 | data.update(system_info.get()) |
| 27 | global _host | 27 | global _host |
| 28 | if not _host: | 28 | if not _host: |
| 29 | _host = netutil.getip() | 29 | _host = netutil.getip() |
| 30 | data['ip'] = _host | 30 | data['ip'] = _host |
| 31 | - print(data) | ||
| 32 | try: | 31 | try: |
| 33 | r = requests.post(SERVER + '/post_terminal_info', json=data, timeout=1) | 32 | r = requests.post(SERVER + '/post_terminal_info', json=data, timeout=1) |
| 34 | - new_ws = r.json().get('data', {}).get('ws', source_ws) | 33 | + new_ws = r.json().get('data', {}).get('ws', data['ws']) |
| 35 | except: | 34 | except: |
| 36 | - new_ws = source_ws | ||
| 37 | - return new_ws, not new_ws == source_ws | 35 | + new_ws = data['ws'] |
| 36 | + return new_ws, not new_ws == data['ws'] |
| @@ -38,6 +38,7 @@ class WebSocketClient(object): | @@ -38,6 +38,7 @@ class WebSocketClient(object): | ||
| 38 | self._io_loop = io_loop or ioloop.IOLoop.current() | 38 | self._io_loop = io_loop or ioloop.IOLoop.current() |
| 39 | self._ws_connection = None | 39 | self._ws_connection = None |
| 40 | self._connect_status = self.DISCONNECTED | 40 | self._connect_status = self.DISCONNECTED |
| 41 | + self._clientname = self._clientuuid = None | ||
| 41 | 42 | ||
| 42 | def connect(self, url): | 43 | def connect(self, url): |
| 43 | self._connect_status = self.CONNECTING | 44 | self._connect_status = self.CONNECTING |
| @@ -128,7 +129,7 @@ class MessageSocketClient(WebSocketClient): | @@ -128,7 +129,7 @@ class MessageSocketClient(WebSocketClient): | ||
| 128 | self._io_loop = ioloop.IOLoop.current() | 129 | self._io_loop = ioloop.IOLoop.current() |
| 129 | self.ws_url = None | 130 | self.ws_url = None |
| 130 | self.auto_net = False | 131 | self.auto_net = False |
| 131 | - self.heartbeat_interval_in_secs = 3 | 132 | + self.heartbeat_interval_in_secs = 30 |
| 132 | 133 | ||
| 133 | super(MessageSocketClient, self).__init__(self._io_loop, | 134 | super(MessageSocketClient, self).__init__(self._io_loop, |
| 134 | self.connect_timeout, | 135 | self.connect_timeout, |
| @@ -200,28 +201,3 @@ class MessageSocketClient(WebSocketClient): | @@ -200,28 +201,3 @@ class MessageSocketClient(WebSocketClient): | ||
| 200 | self.close("quit") | 201 | self.close("quit") |
| 201 | for k, handler in self._later_handler.items(): | 202 | for k, handler in self._later_handler.items(): |
| 202 | self._io_loop.remove_timeout(handler) | 203 | self._io_loop.remove_timeout(handler) |
| 203 | - | ||
| 204 | - | ||
| 205 | -if __name__ == '__main__': | ||
| 206 | - | ||
| 207 | - def success(sock): | ||
| 208 | - global sockccc | ||
| 209 | - sockccc = sock | ||
| 210 | - | ||
| 211 | - | ||
| 212 | - def rec(msg): | ||
| 213 | - if msg == 'quit': | ||
| 214 | - sockccc.quit() | ||
| 215 | - | ||
| 216 | - | ||
| 217 | - def interval(): | ||
| 218 | - if sockccc: | ||
| 219 | - sockccc.send({'test': time.time()}) | ||
| 220 | - Timer(3, interval).start() | ||
| 221 | - | ||
| 222 | - | ||
| 223 | - s1 = MessageSocketClient() | ||
| 224 | - s1.connect('ws://localhost:10000', reconnect=False) | ||
| 225 | - | ||
| 226 | - Timer(2, interval).start() | ||
| 227 | - ioloop.IOLoop.current().start() |
-
请 注册 或 登录 后发表评论