MCPcopy Create free account
hub / github.com/a943512/PyAibote / WebSocketServerThread

Class WebSocketServerThread

PyAibote/Tool/WebsocketsServer.py:9–100  ·  view source on GitHub ↗

运行 WebSocket 服务器的线程 Thread running WebSocket server

Source from the content-addressed store, hash-verified

7
8
9class WebSocketServerThread(threading.Thread):
10 """
11 运行 WebSocket 服务器的线程
12 Thread running WebSocket server
13 """
14
15 def __init__(self, ip, port, is_print):
16 super().__init__()
17 self._loop = None
18 self._server = None
19 self._running = False
20 self._ip = ip
21 self._port = port
22 self._is_print = is_print
23
24 def debug(self, msg):
25 if self._is_print == "DEBUG":
26 logger.debug(msg)
27
28
29 async def handle_connection(self, websocket):
30 """
31 处理客户端连接的协程
32 Ctrip handling client connection
33 """
34 try:
35
36 self.debug(f"Websocket Client connection at: <-<- {websocket.remote_address}")
37 async for message in websocket:
38 Msg = json.loads(message)
39 GlobalVariable.SocketServerClients[Msg["Data"]["Token"]] = websocket
40
41 self.debug(f"Websocket Receive Msg: <-<- {websocket.remote_address}")
42
43 GlobalVariable.WebsocketReceiveMessage.put(Msg)
44 await websocket.send(f"Server received: {message}")
45 except Exception as e:
46 pass
47
48 finally:
49 del GlobalVariable.SocketServerClients[Msg["Data"]["Token"]]
50 self.debug(f"Websocket Disconnect: <-<- {websocket.remote_address}")
51
52
53 async def server_main(self):
54 """
55 WebSocket 服务器主逻辑
56 WebSocket server main logic
57 """
58 self._running = True
59 try:
60 self._server = await websockets.serve(self.handle_connection, self._ip, self._port)
61 print(f"WebSocket Server Stared on ws://{self._ip}:{self._port}")
62 while self._running:
63 if not GlobalVariable.WebsocketCallBack.empty():
64 item = GlobalVariable.WebsocketCallBack.get()
65 for token, client in GlobalVariable.SocketServerClients.items():
66 if token == item['Token']:

Callers 4

executeMethod · 0.85
executeMethod · 0.85
executeMethod · 0.85
executeMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected