feat: Регистрация клиентов
This commit is contained in:
@@ -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 _:
|
||||||
|
|||||||
Reference in New Issue
Block a user