feat: Регистрация клиентов

This commit is contained in:
AURUMVORXX
2025-11-06 20:57:25 +05:00
parent 1f821b4478
commit d7c17fb262

View File

@@ -22,6 +22,7 @@ class Server:
_logger: loguru.Logger = loguru.logger _logger: loguru.Logger = loguru.logger
_static_tokens: list[str] = [] _static_tokens: list[str] = []
_temp_tokens: list[str] = [] _temp_tokens: list[str] = []
_registered_clients: dict[int, list] = {}
_requests: WeakValueDictionary[str, asyncio.Future] = WeakValueDictionary() _requests: WeakValueDictionary[str, asyncio.Future] = WeakValueDictionary()
_topics = TopicWeakDict() _topics = TopicWeakDict()
_topic_lock = asyncio.Lock() _topic_lock = asyncio.Lock()
@@ -161,6 +162,12 @@ class Server:
case {'event': 'init_temp_tokens', 'tokens': tokens}: case {'event': 'init_temp_tokens', 'tokens': tokens}:
cls._temp_tokens = cls._temp_tokens + list(tokens.items()) 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}: case {'event': 'sq_response', 'uuid': uuid, 'data': data}:
try: try:
cls._requests[uuid].set_result(data) cls._requests[uuid].set_result(data)
@@ -173,6 +180,8 @@ class Server:
except KeyError: except KeyError:
kwargs['uuid'] = uuid kwargs['uuid'] = uuid
kwargs['connection'] = connection 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)) asyncio.create_task(call_event(event, **kwargs))
case _: case _: