Repository navigation
Ningún mensaje se da por mandado hasta que el server lo confirma - #106
Merged
Merged
Conversation
Con la sala "conectada", un mensaje se mandaba y se olvidaba. Si el socket ya estaba muerto sin que nadie lo supiera (los primeros segundos de un corte de red, o para siempre con el Offline de DevTools), el mensaje se perdia sin aviso; con un corte mas largo que el limite de socket.io, tambien. - Todo mensaje (el de la portada, los normales y los pendientes) entra a la cola de la pestana con un id y sale de ahi solo con la confirmacion del server. Sin confirmacion en 6 s se muestra como pendiente, se reconecta y al volver a entrar se reintenta. - El server confirma cada chat y reconoce por id un reintento de algo que ya le llego, asi que nada sale doble. - Si el navegador avisa que no hay red, se desconecta al instante; al volver, se reconecta. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HJ5oT2Xm3VZMvbPAcgKbz4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Qué pasaba
Con la sala "conectada", un mensaje se mandaba y se olvidaba. Si el socket ya estaba muerto sin que nadie lo supiera, el mensaje se perdía sin ninguna nota:
La cola del #104 solo cubría el caso en que la sala ya sabía que no había conexión.
Cambios
Server (
index.ts, manejador dechat)ack). Respondeok: falsesolo cuando vale la pena reintentar (todavía no está en la sala); lo que nunca va a entrar, como un adjunto inválido, se confirma igual.Front (
App.tsx)offline/onlinedel navegador, se desconecta al instante y se reconecta al volver, sin esperar a los pings.Cómo se probó
Playwright contra el server real (agente simulado), con un proxy TCP entre navegador y server que puede congelar la conexión sin cerrarla (socket zombi) o congelar solo la bajada (llega, pero se pierde la confirmación), y con la emulación de red de DevTools:
Regresiones, en la rama: cola del #104 (casos A, B y C), primer mensaje del #105 (persona nueva y con nombre), dos personas en Multijugador (#100),
npm run typecheck,npm run buildy las 8 demos.Límite conocido
Los ids recibidos viven en memoria. Si el server se reinicia justo entre recibir un mensaje y confirmarlo, el reintento podría salir dos veces. Es mejor que perderlo, y está anotado en el código.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HJ5oT2Xm3VZMvbPAcgKbz4
Generated by Claude Code