优化一下
This commit is contained in:
@@ -10,13 +10,12 @@ class GsCoreClient:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self._ws = None
|
self._ws = None
|
||||||
self._url: str = ""
|
self._url: str = ""
|
||||||
self._token: str = "" # 新增 token 存储
|
self._token: str = ""
|
||||||
self._recv_task: Optional[asyncio.Task] = None
|
self._recv_task: Optional[asyncio.Task] = None
|
||||||
self._message_handler: Optional[Callable[[dict], Awaitable[None]]] = None
|
self._message_handler: Optional[Callable[[dict], Awaitable[None]]] = None
|
||||||
self._is_closing = False
|
self._is_closing = False
|
||||||
|
|
||||||
def configure(self, url: str, handler: Callable[[dict], Awaitable[None]], token: str = "liuwei"):
|
def configure(self, url: str, handler: Callable[[dict], Awaitable[None]], token: str = "liuwei"):
|
||||||
"""配置连接信息,默认 token 为 liuwei"""
|
|
||||||
self._url = url
|
self._url = url
|
||||||
self._message_handler = handler
|
self._message_handler = handler
|
||||||
self._token = token
|
self._token = token
|
||||||
@@ -30,17 +29,19 @@ class GsCoreClient:
|
|||||||
try:
|
try:
|
||||||
logger.info(f"[GsCoreClient] 正在连接早柚核心: {self._url}")
|
logger.info(f"[GsCoreClient] 正在连接早柚核心: {self._url}")
|
||||||
|
|
||||||
# 在 Header 中携带 Token 进行鉴权
|
# 构造 Header
|
||||||
headers = {
|
headers = {
|
||||||
"Authorization": f"Bearer {self._token}",
|
"Authorization": f"Bearer {self._token}",
|
||||||
"Token": self._token # 兼容某些直接校验 Token 字段的服务端
|
"Token": self._token
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 修复点:确保 extra_headers 正确传递
|
||||||
self._ws = await websockets.connect(
|
self._ws = await websockets.connect(
|
||||||
self._url,
|
self._url,
|
||||||
max_size=10 ** 7,
|
extra_headers=headers,
|
||||||
extra_headers=headers
|
max_size=10 ** 7
|
||||||
)
|
)
|
||||||
|
|
||||||
self._is_closing = False
|
self._is_closing = False
|
||||||
|
|
||||||
if self._recv_task and not self._recv_task.done():
|
if self._recv_task and not self._recv_task.done():
|
||||||
@@ -51,6 +52,7 @@ class GsCoreClient:
|
|||||||
logger.success("[GsCoreClient] 连接成功且鉴权通过")
|
logger.success("[GsCoreClient] 连接成功且鉴权通过")
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
# 如果依然报错,可能是 websockets 版本过旧,建议升级: pip install --upgrade websockets
|
||||||
logger.error(f"[GsCoreClient] 连接或鉴权失败: {e}")
|
logger.error(f"[GsCoreClient] 连接或鉴权失败: {e}")
|
||||||
self._ws = None
|
self._ws = None
|
||||||
return False
|
return False
|
||||||
@@ -80,7 +82,7 @@ class GsCoreClient:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(f"[GsCoreClient] 接收消息异常: {e}")
|
logger.exception(f"[GsCoreClient] 接收消息异常: {e}")
|
||||||
break
|
break
|
||||||
await asyncio.sleep(0)
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
if not self._is_closing:
|
if not self._is_closing:
|
||||||
self._ws = None
|
self._ws = None
|
||||||
|
|||||||
Reference in New Issue
Block a user