@@ -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