import asyncio import websockets async def connect_flow(client): """连接 WebSocket 服务器并自动重连。""" while client.running: try: client.logger.info(f"[{client.get_time()}] 正在连接轻简API {client.uri}...") async with websockets.connect(client.uri) as websocket: client.websocket = websocket from utils.health_check import set_qingjian_connected set_qingjian_connected(True) client.logger.info(f"[{client.get_time()}] 连接成功!") if client.enable_agent: client.logger.info(f"[{client.get_time()}] AI Agent 已启用,将自动处理消息") client.logger.info(f"[{client.get_time()}] 等待接收消息...") await client.receive_messages() except ConnectionRefusedError: from utils.health_check import set_qingjian_connected set_qingjian_connected(False) client.logger.info(f"[{client.get_time()}] 连接被拒绝,请检查轻简软件是否已启动") except websockets.exceptions.InvalidURI: from utils.health_check import set_qingjian_connected set_qingjian_connected(False) client.logger.info(f"[{client.get_time()}] URI格式错误") except Exception as e: from utils.health_check import set_qingjian_connected set_qingjian_connected(False) client.logger.info(f"[{client.get_time()}] 连接错误: {e}") if client.running: client.logger.info(f"[{client.get_time()}] 5秒后尝试重连...") await asyncio.sleep(5) async def receive_messages_flow(client): """持续接收消息。""" try: async for message in client.websocket: await client.handle_message(message) except websockets.exceptions.ConnectionClosed: from utils.health_check import set_qingjian_connected set_qingjian_connected(False) client.logger.info(f"[{client.get_time()}] 连接已关闭") except Exception as e: from utils.health_check import set_qingjian_connected set_qingjian_connected(False) client.logger.info(f"[{client.get_time()}] 接收消息错误: {e}") async def handle_message_flow(client, message, *, shop_type_resolver): from core.websocket_inbound_flow import handle_incoming_message await handle_incoming_message(client, message, shop_type_resolver=shop_type_resolver)