# websocket

# 示例

# websocket-client==1.3.2
from websocket import WebSocketApp, _exceptions
from concurrent.futures import ThreadPoolExecutor

executor = ThreadPoolExecutor(max_workers=5)

scheculer_ws = None

class WebsocketHandler(WebSocketApp):
    def __init__(self, url, ws_name="ws"):
        super().__init__(url=url)
        self.namespace = ws_name
        self.on_message = self.on_message_callback
        self.on_error = self.on_error_callback
        self.on_close = self.on_close_callback
        self.on_open = self.on_open_callback

    def on_message_callback(self, ws, message):    # 服务器有数据更新时,主动推送过来的数据
        pass

    def on_error_callback(self, ws, error):        # 程序报错时,就会触发on_error事件
        pass

    def on_close_callback(self, *args,**kwargs):
        pass

    def on_open_callback(self, ws):                # 连接到服务器之后就会触发on_open事件,这里用于send数据
        pass

    def work_spin(self):
        print("work_spin executed")
        while True:
            try:
                self.run_forever(ping_timeout=5)
                time.sleep(2)
                continue
            except KeyboardInterrupt:
                self.close()
                break

scheculer_ws = WebsocketHandler(url=settings.WFM_URL, ws_name="scheduler_ws")
executor.submit(scheculer_ws.work_spin)