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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

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