fix: websocket client reconnect #31
Merged
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.
Goals
Connection Model
connecting,connected,reconnecting,disconnected,error.reconnecting; fatal conditions move todisconnected.waitConnected) always resolves on the next successful transition toconnected; it is renewed on each reconnect attempt.Retry Policy
disconnecteduntil manually retried.Liveness & Half‑Open Detection
Offline Behavior
Join Handling
joincalls issued while the socket is not yet open are enqueued and flushed after connect.connecting,joined,reconnecting,disconnected,error.Room Rejoin
errorand is removed from the tracked set so callers can decide next steps.Manual Controls
connect({ resetBackoff?: boolean })orretryNow()starts/forces a reconnect and optionally resets backoff.close()stops auto‑reconnect and transitions todisconnected; callers must explicitly reconnect afterwards.Observability Hooks
Success Criteria
errorso apps can respond.