Files
tw/core/websocket_connection_flow.py

33 lines
1.2 KiB
Python

import asyncio
import websockets
import logging
logger = logging.getLogger("cs_agent")
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
client.logger.info(f"[{client.get_time()}] 连接成功!")
client.logger.info(f"[{client.get_time()}] 等待接收消息...")
await client.receive_messages()
except Exception as e:
# 统一捕获异常,避免因为不同版本的 websockets 导致属性错误
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 Exception as e:
client.logger.info(f"[{client.get_time()}] 接收消息中断: {e}")