- Añadido sistema de sesiones con localStorage - Nuevo hook useSessionStorage para manejar sesiones - Botón de salir de la partida (ExitGameButton) en todas las pantallas del juego - Botón de logout (LogoutButton) solo en el lobby - Evento leave_game en servidor para cerrar partida cuando alguien sale - Evento reconnect_session para reconectar jugadores después de recargar - Actualizado GameBoard para incluir botón de salida - Actualizado page.tsx para manejar sesiones y logout
1.8 KiB
1.8 KiB
description
| description |
|---|
| Implementación de sesiones persistentes y botones de salida |
Implementación de Sesiones y Botones de Salida
Objetivo
Implementar tres mejoras principales:
- Sistema de sesiones persistentes
- Botón de salir de la partida (en todas las pantallas de juego)
- Botón de salir del juego (solo en lobby)
Tareas
1. Sistema de Sesiones Persistentes
Cliente:
- Crear hook
useSessionStoragepara manejar sesiones - Guardar en localStorage:
playerNameyfullPlayerNamecurrentView(login/lobby/game)roomIdsi está en una partida
- Al cargar la app, verificar si hay sesión activa
- Si hay sesión, reconectar al servidor y recuperar estado
Servidor:
- Implementar evento
reconnect_sessionpara validar y recuperar estado - Mantener mapping de
socketIdaplayerIdpersistente - Al reconectar, actualizar el socketId del jugador en la partida
2. Botón de Salir de la Partida
Cliente:
- Crear componente
ExitGameButtoncon icono de flecha - Posicionar arriba a la izquierda
- Mostrar en todas las fases del juego (no en lobby)
- Al hacer clic, emitir evento
leave_game
Servidor:
- Implementar evento
leave_game - Notificar a todos los jugadores que alguien salió
- Eliminar la partida de la BD
- Devolver a todos al lobby
3. Botón de Salir del Juego
Cliente:
- Crear componente
LogoutButtoncon icono de apagar - Posicionar arriba a la izquierda solo en lobby
- Al hacer clic:
- Limpiar localStorage
- Volver a vista de login
- Desconectar socket si está en partida
Orden de Implementación
- Crear hooks y utilidades para sesiones
- Implementar botón de salir del juego (logout)
- Implementar botón de salir de la partida
- Implementar lógica de reconexión en servidor
- Integrar sistema de sesiones en el cliente
- Pruebas