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