From 33e10f2aacfefc5859ac92e26e6cd65248dfc2ee Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Sun, 12 Apr 2026 23:07:17 +0000 Subject: [PATCH] fix: [PORTALS] Design many-portal navigation for crowded Nexus layouts (#1314) Co-authored-by: Alexander Whitestone Co-committed-by: Alexander Whitestone --- server.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/server.py b/server.py index fe1e9d76..db1de2ba 100644 --- a/server.py +++ b/server.py @@ -52,19 +52,20 @@ async def broadcast_handler(websocket: websockets.WebSocketServerProtocol): continue disconnected = set() - # Create broadcast tasks for efficiency - tasks = [] + # Create broadcast tasks, tracking which client each task targets + task_client_pairs = [] for client in clients: if client != websocket and client.open: - tasks.append(asyncio.create_task(client.send(message))) - - if tasks: + task = asyncio.create_task(client.send(message)) + task_client_pairs.append((task, client)) + + if task_client_pairs: + tasks = [pair[0] for pair in task_client_pairs] results = await asyncio.gather(*tasks, return_exceptions=True) for i, result in enumerate(results): if isinstance(result, Exception): - # Find the client that failed - target_client = [c for c in clients if c != websocket][i] - logger.error(f"Failed to send to a client {target_client.remote_address}: {result}") + target_client = task_client_pairs[i][1] + logger.error(f"Failed to send to client {target_client.remote_address}: {result}") disconnected.add(target_client) if disconnected: