diff --git a/client/src/hooks/useSocket.ts b/client/src/hooks/useSocket.ts index c1292c5..3dc1775 100644 --- a/client/src/hooks/useSocket.ts +++ b/client/src/hooks/useSocket.ts @@ -44,6 +44,12 @@ export const useSocket = () => { alert(msg); // Simple error handling for now }); + // Manejar finalización de partida por el host + socketInstance.on('game_finalized', () => { + console.log('La partida ha sido finalizada por el host'); + setGameState(null); // Resetear estado para volver al lobby + }); + setSocket(socketInstance); return () => { diff --git a/server/src/index.ts b/server/src/index.ts index f77df69..0b4044f 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -287,15 +287,17 @@ io.on('connection', (socket) => { socket.on('finalize_game', ({ roomId }) => { const game = games[roomId]; if (game && game.hostId === socket.id) { - game.finalizeGame(); - io.to(roomId).emit('game_state', game.state); + // Notificar a todos los jugadores que la partida ha sido finalizada + io.to(roomId).emit('game_finalized'); - // Esperar 5 segundos y luego eliminar la partida - setTimeout(() => { - delete games[roomId]; - // Desconectar a todos los jugadores de la sala - io.in(roomId).socketsLeave(roomId); - }, 5000); + // Eliminar la partida inmediatamente del registro + delete games[roomId]; + + // Actualizar lista de salas para todos los clientes + io.emit('rooms_list', getRoomsList()); + + // Desconectar a todos los jugadores de la sala + io.in(roomId).socketsLeave(roomId); } });