diff --git a/Html/apps/extension_ase/ase_client/client.py b/Html/apps/extension_ase/ase_client/client.py index 433cf3c..66bef43 100644 --- a/Html/apps/extension_ase/ase_client/client.py +++ b/Html/apps/extension_ase/ase_client/client.py @@ -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: