From d8a9fb2dcad23fdffe50deec8f4753c0d4c778fc Mon Sep 17 00:00:00 2001 From: RandyJC Date: Mon, 8 Dec 2025 23:12:05 +0100 Subject: [PATCH] fix rejoining the game for some clients --- packages/socket/src/index.ts | 12 ------------ packages/socket/src/services/game.ts | 13 +++++++++---- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/packages/socket/src/index.ts b/packages/socket/src/index.ts index ff0f7f2..8499a1d 100644 --- a/packages/socket/src/index.ts +++ b/packages/socket/src/index.ts @@ -281,18 +281,6 @@ io.on("connection", (socket) => { return } - if (!game.started) { - game.players = game.players.filter((p) => p.id !== socket.id) - - io.to(game.manager.id).emit("manager:removePlayer", player.id) - io.to(game.manager.id).emit("manager:players", game.players) - io.to(game.gameId).emit("game:totalPlayers", game.players.length) - - console.log(`Removed player ${player.username} from game ${game.gameId}`) - - return - } - player.connected = false io.to(game.gameId).emit("game:totalPlayers", game.players.length) io.to(game.manager.id).emit("manager:players", game.players) diff --git a/packages/socket/src/services/game.ts b/packages/socket/src/services/game.ts index 87a9d80..12174a0 100644 --- a/packages/socket/src/services/game.ts +++ b/packages/socket/src/services/game.ts @@ -213,13 +213,18 @@ class Game { } join(socket: Socket, username: string) { - const isAlreadyConnected = this.players.find( + const existing = this.players.find( (p) => p.clientId === socket.handshake.auth.clientId ) - if (isAlreadyConnected) { - socket.emit("game:errorMessage", "Player already connected") - + if (existing) { + // Reconnect existing player (even before game start) + existing.id = socket.id + existing.connected = true + if (username) existing.username = username + socket.join(this.gameId) + this.io.to(this.manager.id).emit("manager:players", this.players) + socket.emit("game:successJoin", this.gameId) return }