作者 lemon

新增转移终端优化方案2

... ... @@ -4,6 +4,7 @@
# @Author : Lemon
# @File : core.py
# @Software: PyCharm
import functools
import json
from tornado import ioloop
... ... @@ -16,6 +17,12 @@ from lib.socket_ import MessageSocketClient
monitor = Monitor()
def server_replace(ws_url):
'''新开一个socket尝试连接新地址,存储在临时变量里'''
monitor._temp_socket = MessageSocketClient(connect_success, message_receive)
monitor._temp_socket.connect(ws_url, reconnect=False) # 失败不重试
def message_receive(message):
print("收到消息", message)
if message == 'login1':
... ... @@ -39,20 +46,24 @@ def message_receive(message):
print(traceback.format_exc())
def server_replace(ws_url):
monitor._temp_socket = MessageSocketClient(connect_success, message_receive)
monitor._temp_socket.connect(ws_url, reconnect=False)
def host():
return 'ws://fbchat.data.gzntkj.com:8081', True
def connect_success(sock):
if monitor._temp_socket == sock:
sock.auto_reconnet = True
sock.auto_reconnet = True # 新的连接成功后把断线重连开启
monitor._socket.quit() # 旧的断开
monitor._temp_socket = None
monitor._temp_socket = None # 清除临时变量
monitor.bind(sock)
monitor._init_server_()
monitor._socket.new_server_func = lambda: control_server.get_ws_address(monitor._name, sock.ws_url)
monitor._socket.new_server_func = functools.partial(
control_server.get_ws_address,
monitor._name,
sock.ws_url
)
monitor._socket.server_replace = server_replace
... ...
... ... @@ -15,7 +15,6 @@ def get_init_name():
def get_ws_address(name, source_ws):
data = {"name": name, "ws": source_ws}
try:
r = requests.post(SERVER + '/post_terminal_info', data, timeout=1)
new_ws = r.json().get('data', {}).get('ws', source_ws)
... ...
... ... @@ -162,6 +162,8 @@ class MessageSocketClient(WebSocketClient):
self.reconnect()
def reconnect(self):
if not self.auto_reconnet:
self.quit()
if not self.is_connected() and self.auto_reconnet:
self._later_handler['reconnect'] = self._io_loop.call_later(self.reconnect_interval,
super(MessageSocketClient, self).connect,
... ...