aseclient initdata
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user