diff --git a/src/pyg2o/server.py b/src/pyg2o/server.py index ad4d4c8..b252e03 100644 --- a/src/pyg2o/server.py +++ b/src/pyg2o/server.py @@ -22,6 +22,7 @@ class Server: _logger: loguru.Logger = loguru.logger _static_tokens: list[str] = [] _temp_tokens: list[str] = [] + _registered_clients: dict[int, list] = {} _requests: WeakValueDictionary[str, asyncio.Future] = WeakValueDictionary() _topics = TopicWeakDict() _topic_lock = asyncio.Lock() @@ -161,6 +162,12 @@ class Server: case {'event': 'init_temp_tokens', 'tokens': tokens}: cls._temp_tokens = cls._temp_tokens + list(tokens.items()) + case {'event': 'register_client', 'playerid': playerid}: + try: + cls._registered_clients[playerid].append(connection) + except KeyError: + cls._registered_clients[playerid] = [connection] + case {'event': 'sq_response', 'uuid': uuid, 'data': data}: try: cls._requests[uuid].set_result(data) @@ -173,6 +180,8 @@ class Server: except KeyError: kwargs['uuid'] = uuid kwargs['connection'] = connection + playerid = next((key for key, values in cls._registered_clients.items() if connection in values), None) + if playerid is not None: kwargs['playerid'] = playerid asyncio.create_task(call_event(event, **kwargs)) case _: