作者 lemon

更新代码3

@@ -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()