Skip to content

No hay reconexion automatica: si se corta la conexion hay que recargar la pagina #18

Description

@leocagli

Síntoma

Cuando se corta la conexión, el juego muestra "Conexion cerrada." y ahí queda. El jugador tiene que recargar la página a mano y volver a elegir personaje.

Causa

En frontend/components/game/session/useGameSession.ts, los handlers onerror y onclose sólo emiten estado. No hay ningún intento de reconexión.

El auto-connect de frontend/app/play/page.tsx está protegido por una guarda (autoConnectKeyRef) que hace que corra una sola vez por combinación de cuenta y personaje, así que tampoco vuelve a disparar.

Buscando reconnect o Reconectar en todo el frontend no aparece nada: no existe ni siquiera un botón manual.

Por qué importa

En desktop con conexión estable se nota poco. En mobile es permanente: cambiar de WiFi a datos, pasar por un túnel o bloquear la pantalla cortan el socket.

Propuesta

  1. Reconexión automática con backoff exponencial y un tope de intentos.
  2. Estado visible para el jugador: "reconectando…", con la posibilidad de cancelar.
  3. Botón de reconectar manual cuando se agotan los intentos.
  4. Escuchar visibilitychange y pagehide para reconectar al volver del segundo plano, en vez de esperar a que el jugador toque algo.
  5. Preservar el personaje seleccionado, para no obligar a rehacer el flujo entero.

A tener en cuenta

  • El servidor puede haber desconectado al personaje del lado suyo. La reconexión tiene que rehacer el handshake completo, no asumir que la sesión sigue viva.
  • Hay que evitar la tormenta de reconexiones si lo que se cayó es el servidor: el backoff es lo que protege de eso.
  • El juego pide un ticket antes de conectar. La reconexión tiene que contemplar que ese ticket puede haber expirado.

Criterios de aceptación

  • Cortar la red y restaurarla reconecta solo, sin recargar
  • Volver del segundo plano tras un rato reconecta solo
  • Con el servidor caído, los intentos se espacian en vez de saturar
  • El jugador ve en qué estado está la conexión
  • Tras reconectar, sigue jugando con el mismo personaje

Archivos relevantes

  • frontend/components/game/session/useGameSession.ts (ciclo de vida del socket)
  • frontend/app/play/page.tsx (auto-connect y autoConnectKeyRef)

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignbountyIssue con recompensa asignadabugSomething isn't workingenhancementNew feature or requestgrantfoxPublicada en la campana de GrantFoxreward-50-usdRecompensa 50 USD - complejidad media

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions