Skip to content

Commit d328282

Browse files
committed
add session_id and normal_exit
1 parent 554bcad commit d328282

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

unilabos/app/ws_client.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ def __init__(self, websocket_url: str, send_queue: Queue, device_manager: Device
359359
self.device_manager = device_manager
360360
self.queue_processor = None # 延迟设置
361361
self.websocket_client = None # 延迟设置
362+
self.session_id = ""
362363

363364
# WebSocket连接
364365
self.websocket = None
@@ -427,7 +428,10 @@ async def _connection_handler(self):
427428
ssl=ssl_context,
428429
ping_interval=WSConfig.ping_interval,
429430
ping_timeout=10,
430-
additional_headers={"Authorization": f"Lab {BasicConfig.auth_secret()}"},
431+
additional_headers={
432+
"Authorization": f"Lab {BasicConfig.auth_secret()}",
433+
"EdgeSession": f"{self.session_id}",
434+
},
431435
logger=ws_logger,
432436
) as websocket:
433437
self.websocket = websocket
@@ -572,6 +576,9 @@ async def _process_message(self, data: Dict[str, Any]):
572576
await self._handle_resource_tree_update(message_data, "update")
573577
elif message_type == "remove_material":
574578
await self._handle_resource_tree_update(message_data, "remove")
579+
elif message_type == "session_id":
580+
self.session_id = message_data.get("session_id")
581+
logger.info(f"[MessageProcessor] Session ID: {self.session_id}")
575582
else:
576583
logger.debug(f"[MessageProcessor] Unknown message type: {message_type}")
577584

@@ -1196,6 +1203,18 @@ def stop(self) -> None:
11961203

11971204
logger.info("[WebSocketClient] Stopping connection")
11981205

1206+
# 发送 normal_exit 消息
1207+
if self.is_connected():
1208+
try:
1209+
session_id = self.message_processor.session_id
1210+
message = {"action": "normal_exit", "data": {"session_id": session_id}}
1211+
self.message_processor.send_message(message)
1212+
logger.info(f"[WebSocketClient] Sent normal_exit message with session_id: {session_id}")
1213+
# 给一点时间让消息发送出去
1214+
time.sleep(1)
1215+
except Exception as e:
1216+
logger.warning(f"[WebSocketClient] Failed to send normal_exit message: {str(e)}")
1217+
11991218
# 停止两个核心线程
12001219
self.message_processor.stop()
12011220
self.queue_processor.stop()

0 commit comments

Comments
 (0)