From 63c72b9f0c61300f6e36fa3d908a5bf22fd6203a Mon Sep 17 00:00:00 2001 From: George Mathew <97821867+0xgeorgemathew@users.noreply.github.com> Date: Wed, 25 Mar 2026 05:25:26 +0530 Subject: [PATCH] Fix websocket reconnect state timing --- apps/web/src/wsTransport.test.ts | 15 +++++++++++++++ apps/web/src/wsTransport.ts | 1 + 2 files changed, 16 insertions(+) diff --git a/apps/web/src/wsTransport.test.ts b/apps/web/src/wsTransport.test.ts index 55ff2556e4..fd08438891 100644 --- a/apps/web/src/wsTransport.test.ts +++ b/apps/web/src/wsTransport.test.ts @@ -253,4 +253,19 @@ describe("WsTransport", () => { await expect(requestPromise).rejects.toThrow("WebSocket connection closed."); transport.dispose(); }); + + it("reports reconnecting as soon as a reconnect is scheduled", () => { + vi.useFakeTimers(); + const transport = new WsTransport("ws://localhost:3020"); + const socket = getSocket(); + socket.open(); + + socket.close(); + + expect(transport.getState()).toBe("reconnecting"); + expect(sockets).toHaveLength(1); + + transport.dispose(); + vi.useRealTimers(); + }); }); diff --git a/apps/web/src/wsTransport.ts b/apps/web/src/wsTransport.ts index 12c9a6d958..8976607673 100644 --- a/apps/web/src/wsTransport.ts +++ b/apps/web/src/wsTransport.ts @@ -296,6 +296,7 @@ export class WsTransport { return; } + this.state = "reconnecting"; const delay = RECONNECT_DELAYS_MS[Math.min(this.reconnectAttempt, RECONNECT_DELAYS_MS.length - 1)] ?? RECONNECT_DELAYS_MS[0]!;