|
...
|
...
|
@@ -8,8 +8,6 @@ import datetime |
|
|
|
import functools
|
|
|
|
import json
|
|
|
|
import random
|
|
|
|
import time
|
|
|
|
from threading import Timer
|
|
|
|
|
|
|
|
from tornado import gen
|
|
|
|
from tornado import httpclient
|
|
...
|
...
|
@@ -135,8 +133,6 @@ class MessageSocketClient(WebSocketClient): |
|
|
|
self.connect_timeout,
|
|
|
|
self.request_timeout)
|
|
|
|
|
|
|
|
self._later_handler['move_server'] = self._io_loop.call_later(random.randint(30, 60), self.auto_move_server)
|
|
|
|
|
|
|
|
def new_server_func(self):
|
|
|
|
return self.ws_url, False
|
|
|
|
|
|
...
|
...
|
@@ -146,8 +142,8 @@ class MessageSocketClient(WebSocketClient): |
|
|
|
def auto_move_server(self):
|
|
|
|
ws_url, move = self.new_server_func()
|
|
|
|
if move:
|
|
|
|
print('需要移动->', ws_url)
|
|
|
|
self.server_replace(ws_url)
|
|
|
|
self._later_handler['move_server'] = self._io_loop.call_later(random.randint(30, 30), self.auto_move_server)
|
|
|
|
|
|
|
|
def connect(self, url, name, uuid, reconnect=True, reconnect_interval=3):
|
|
|
|
self.ws_url = url
|
|
...
|
...
|
@@ -161,8 +157,6 @@ class MessageSocketClient(WebSocketClient): |
|
|
|
def on_connection_success(self):
|
|
|
|
if self._connect_success:
|
|
|
|
self._connect_success(self)
|
|
|
|
self._later_handler['heartbeat'] = self._io_loop.call_later(self.heartbeat_interval_in_secs,
|
|
|
|
functools.partial(self.sendheartbeat, self.ws_url))
|
|
|
|
|
|
|
|
def on_connection_close(self, reason):
|
|
|
|
print('%s Connection closed reason=%s' % (self.ws_url, reason,))
|
|
...
|
...
|
@@ -179,16 +173,10 @@ class MessageSocketClient(WebSocketClient): |
|
|
|
def payload_data(self):
|
|
|
|
return {"type": "ping"}
|
|
|
|
|
|
|
|
def sendheartbeat(self, _url):
|
|
|
|
def sendheartbeat(self):
|
|
|
|
print(datetime.datetime.now(), "发送❤️")
|
|
|
|
if self.ws_url == _url:
|
|
|
|
msg = self.payload_data()
|
|
|
|
bool = self.send(msg) if msg else False
|
|
|
|
|
|
|
|
if msg is None or bool:
|
|
|
|
self._later_handler['heartbeat'] = self._io_loop.call_later(self.heartbeat_interval_in_secs,
|
|
|
|
functools.partial(self.sendheartbeat,
|
|
|
|
self.ws_url))
|
|
|
|
msg = self.payload_data()
|
|
|
|
self.send(msg)
|
|
|
|
|
|
|
|
def on_message(self, msg):
|
|
|
|
if not self._message_receive:
|
|
...
|
...
|
@@ -201,3 +189,19 @@ class MessageSocketClient(WebSocketClient): |
|
|
|
self.close("quit")
|
|
|
|
for k, handler in self._later_handler.items():
|
|
|
|
self._io_loop.remove_timeout(handler)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
from apscheduler.schedulers.tornado import TornadoScheduler
|
|
|
|
|
|
|
|
|
|
|
|
def run():
|
|
|
|
print(1)
|
|
|
|
|
|
|
|
|
|
|
|
sock = MessageSocketClient()
|
|
|
|
sched = TornadoScheduler()
|
|
|
|
sched.add_job(run, 'interval', seconds=3)
|
|
|
|
sched.start()
|
|
|
|
|
|
|
|
sock._io_loop.instance().start() |
...
|
...
|
|