aseclient initdata

This commit is contained in:
CakeCN
2025-12-09 16:21:14 +08:00
parent 1be048bf06
commit d222358ded

View File

@@ -45,7 +45,10 @@ class ASEngineClient:
self.sid = self.sio.get_sid(namespace=self.namespace) self.sid = self.sio.get_sid(namespace=self.namespace)
print(f"Connected to server. SID: {self.sid}") print(f"Connected to server. SID: {self.sid}")
if self._on_connect_callback is not None: if self._on_connect_callback is not None:
self._on_connect_callback(self._on_connect_callback_entry, self._on_connect_callback_initData) self._on_connect_callback(
entry=self._on_connect_callback_entry,
init_data=self._on_connect_callback_initData
)
# 断开连接事件 # 断开连接事件
@self.sio.on('disconnect', namespace=self.namespace) @self.sio.on('disconnect', namespace=self.namespace)
@@ -75,17 +78,42 @@ class ASEngineClient:
event.set() # 触发事件,通知等待的线程 event.set() # 触发事件,通知等待的线程
def register_on_connect_entry(self, callback: Callable, entry: Any, init_data: Any)->bool: def register_on_connect_entry(self, callback: Callable, entry: Any, init_data: Any)->bool:
"""注册连接事件回调函数
参数:
- callback: 连接事件回调函数,接受 **kwargs 参数
- entry: 回调关联的条目对象
- init_data: 初始化数据
回调关键字参数:
- entry: 回调关联的条目对象
- init_data: 初始化数据
"""
if not callable(callback): if not callable(callback):
return False return False
self._on_connect_callback = callback self._on_connect_callback = callback
self._on_connect_callback_entry=entry self._on_connect_callback_entry=entry
self._on_connect_callback_initData=init_data self._on_connect_callback_initData=init_data
return True
def register_route_with_entry(self, route: str, def register_route_with_entry(self, route: str,
callback: Optional[Callable] = None, callback: Optional[Callable] = None,
entry: Any = None, entry: Any = None,
init_data: Optional[Any] = None) -> bool: init_data: Optional[Any] = None) -> bool:
"""注册带条目的路由回调函数
参数:
- route: 路由名称
- callback: 回调函数,接受 **kwargs 参数
- entry: 回调关联的条目对象
- init_data: 初始化数据
回调关键字参数:
- entry: 回调关联的条目对象
- data: 接收到的消息数据
- init_data: 初始化数据
"""
if not route: if not route:
print("Route cannot be empty") print("Route cannot be empty")
return False return False
@@ -93,7 +121,8 @@ class ASEngineClient:
if callback is None: if callback is None:
bound_cb = self._default_callback bound_cb = self._default_callback
else: else:
bound_cb = partial(callback, entry) # 等价于 lambda data, init: callback(entry, data, init) # 使用 partial 绑定 entry 作为关键字参数
bound_cb = partial(callback, entry=entry)
self.routes[route] = { self.routes[route] = {
'callback': bound_cb, 'callback': bound_cb,
@@ -110,7 +139,7 @@ class ASEngineClient:
cb = route_info['callback'] # 已经绑定过 entry cb = route_info['callback'] # 已经绑定过 entry
init = route_info.get('init_data') init = route_info.get('init_data')
try: try:
cb(data, init) # 现在只传 data / init_data cb(data=data, init_data=init) # 传递关键字参数
except Exception as e: except Exception as e:
print(f"Callback error on route '{_route}': {e}") print(f"Callback error on route '{_route}': {e}")
@@ -118,11 +147,17 @@ class ASEngineClient:
def register_route(self, route: str, callback: Optional[Callable] = None, init_data: Optional[Any] = None): def register_route(self, route: str, callback: Optional[Callable] = None, init_data: Optional[Any] = None):
""" """注册路由回调函数
注册一个路由及其回调函数
:param route: 路由名称 参数:
:param callback: 回调函数,接收消息数据作为参数 - route: 路由名称
:return: 是否注册成功 - callback: 回调函数,接受 **kwargs 参数
- init_data: 初始化数据
回调关键字参数:
- entry: 回调关联的条目对象(此处为 None
- data: 接收到的消息数据
- init_data: 初始化数据
""" """
if not route: if not route:
print("Route cannot be empty") print("Route cannot be empty")
@@ -130,7 +165,9 @@ class ASEngineClient:
# 存储路由和回调 # 存储路由和回调
self.routes[route] = { self.routes[route] = {
'callback': callback if callback else self._default_callback 'callback': callback if callback else self._default_callback,
'entry': None,
'init_data': init_data
} }
# 注册事件处理器 # 注册事件处理器
@@ -139,15 +176,26 @@ class ASEngineClient:
print(f"Received message on route '{route}': {data}") print(f"Received message on route '{route}': {data}")
if 'callback' in self.routes[route]: if 'callback' in self.routes[route]:
try: try:
self.routes[route]['callback'](None, data, init_data) self.routes[route]['callback'](
entry=None,
data=data,
init_data=init_data
)
except Exception as e: except Exception as e:
print(f"Error in callback for route '{route}': {e}") print(f"Error in callback for route '{route}': {e}")
print(f"Route '{route}' registered successfully") print(f"Route '{route}' registered successfully")
return True return True
def _default_callback(self, entry: Any, data: Any, init_data: Optional[Any] = None): def _default_callback(self, **kwargs):
"""默认回调函数""" """默认回调函数
关键字参数:
- entry: 回调关联的条目对象
- data: 接收到的消息数据
- init_data: 初始化数据
"""
data = kwargs.get('data', {})
print(f"Default callback received: {data}") print(f"Default callback received: {data}")
def connect(self, timeout: int = 5) -> bool: def connect(self, timeout: int = 5) -> bool: