Browser client stops reconnecting after a single HTTP 503 handshake

Abierto
#5,699 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Utkarshpandey0001 ya está trabajando en esto.

Desde el 20/9/2026.

  • #5757 de @Utkarshpandey0001 — abierto

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
bun, javascript

Línea de trabajo

Comienza con la reproducción independiente y ejecuta sus comandos bun install, browser:install y repro para observar el cliente WebSocket del navegador después del fallo del handshake HTTP 503. Sigue la ruta del cliente que emite client/connection_open_failed y queda inactiva; el trabajo estará terminado cuando los fallos transitorios 503 reanuden la reconexión sin volver a intentarlo ante fallos persistentes 401.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Affected: unmodified npm RivetKit 2.3.13 and 2.3.17 (latest checked 2026-09-11), Chromium 153.0.8010.12, Bun 1.4.0.

Standalone reproduction. After cloning:

bun install --frozen-lockfile --ignore-scripts
bun run browser:install
bun run repro

A loopback test gateway uses real browser WebSockets and a minimal Rivet Init frame:

  1. Establish an SDK connection, then terminate its socket.
  2. Return HTTP 503 once on its next handshake; accept all subsequent handshakes.
  3. The original client emits client/connection_open_failed, becomes idle, and makes no further attempts during a five-second observation window.
  4. A fresh SDK client connects to the same endpoint and actor key while the original remains idle.

Expected: The original connection resumes reconnecting after transient gateway unavailability.

Actual: Recovery stops after the failed handshake. Healthy reconnect succeeds; a persistent HTTP 401 control also becomes idle after one attempt. All six cases are asserted across both versions; exit 0 confirms reproduction.

Browsers expose both 503 and 401 handshake failures as close code 1006, so indiscriminate retries can also retry permanent authentication failures.

Lenguaje dominante
Rust
Estrellas
6.5k
Forks
291
Merge medio
18 h 28 min
PR fusionados (30 d)
36

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de rivet-dev/rivet

Todos los issues de rivet-dev/rivet

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.