diff --git a/server/game/instance/PlayerConnectionHandler.js b/server/game/instance/PlayerConnectionHandler.js index 1b15d06..8bc9b5b 100644 --- a/server/game/instance/PlayerConnectionHandler.js +++ b/server/game/instance/PlayerConnectionHandler.js @@ -244,13 +244,14 @@ class PlayerConnectionHandler { if (oldSocket && oldSocket.id !== newSocket.id) { console.log(`[PCH ${this.gameId}] New socket ${newSocket.id} for player ${identifier}. Old socket: ${oldSocket.id}. Updating records.`); if (this.players[oldSocket.id]) delete this.players[oldSocket.id]; // Удаляем старую запись по старому socket.id + this.players[newSocket.id] = playerEntry; // Убеждаемся, что по новому ID есть актуальная запись if (oldSocket.connected) { // Пытаемся корректно закрыть старый сокет console.log(`[PCH ${this.gameId}] Disconnecting old stale socket ${oldSocket.id}.`); oldSocket.disconnect(true); } } playerEntry.socket = newSocket; // Обновляем сокет в существующей playerEntry - this.players[newSocket.id] = playerEntry; // Убеждаемся, что по новому ID есть актуальная запись + if (oldSocket && oldSocket.id !== newSocket.id && this.players[oldSocket.id] === playerEntry) { // Если вдруг playerEntry был взят по старому socket.id, и этот ID теперь должен быть удален delete this.players[oldSocket.id];