🚪 Finalizar partida expulsa a todos al lobby - El host puede terminar la partida, eliminándola del listado y enviando a todos los jugadores al lobby

This commit is contained in:
Resistencia Dev
2025-12-08 20:51:46 +01:00
parent 31067bc168
commit f09e14f99a
2 changed files with 16 additions and 8 deletions

View File

@@ -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 () => {

View File

@@ -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);
}
});