- 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
63 lines
1.8 KiB
Markdown
63 lines
1.8 KiB
Markdown
---
|
|
description: Implementación de sesiones persistentes y botones de salida
|
|
---
|
|
|
|
# Implementación de Sesiones y Botones de Salida
|
|
|
|
## Objetivo
|
|
Implementar tres mejoras principales:
|
|
1. Sistema de sesiones persistentes
|
|
2. Botón de salir de la partida (en todas las pantallas de juego)
|
|
3. Botón de salir del juego (solo en lobby)
|
|
|
|
## Tareas
|
|
|
|
### 1. Sistema de Sesiones Persistentes
|
|
|
|
**Cliente:**
|
|
- Crear hook `useSessionStorage` para manejar sesiones
|
|
- Guardar en localStorage:
|
|
- `playerName` y `fullPlayerName`
|
|
- `currentView` (login/lobby/game)
|
|
- `roomId` si 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_session` para validar y recuperar estado
|
|
- Mantener mapping de `socketId` a `playerId` persistente
|
|
- Al reconectar, actualizar el socketId del jugador en la partida
|
|
|
|
### 2. Botón de Salir de la Partida
|
|
|
|
**Cliente:**
|
|
- Crear componente `ExitGameButton` con 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 `LogoutButton` con 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
|
|
|
|
1. Crear hooks y utilidades para sesiones
|
|
2. Implementar botón de salir del juego (logout)
|
|
3. Implementar botón de salir de la partida
|
|
4. Implementar lógica de reconexión en servidor
|
|
5. Integrar sistema de sesiones en el cliente
|
|
6. Pruebas
|