From 381ff9463d8c6dfbe94939d499a082bda5046b4e Mon Sep 17 00:00:00 2001 From: Rune Harlyk Date: Sat, 3 Jan 2026 01:28:07 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Resubscribe=20to=20events=20afte?= =?UTF-8?q?r=20reconnect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/lib/stores/socket.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/lib/stores/socket.ts b/app/src/lib/stores/socket.ts index 9416f1b..7f02362 100644 --- a/app/src/lib/stores/socket.ts +++ b/app/src/lib/stores/socket.ts @@ -101,6 +101,7 @@ function createWebSocket() { ping() set(true) clearTimeout(reconnectTimeoutId) + resubscribeAll() event_listeners.get('open')?.forEach(listener => listener(ev)) } ws.onmessage = frame => { @@ -159,6 +160,13 @@ function createWebSocket() { send(WebsocketMessage.create({ subNotif: sub_msg })) } + function resubscribeAll() { + for (const tag of message_listeners.keys()) { + const sub_msg = WebsocketMessages.SubscribeNotification.create({ tag }) + send(WebsocketMessage.create({ subNotif: sub_msg })) + } + } + function send(data: WebsocketMessage) { if (!ws || ws.readyState !== WebSocket.OPEN) return const encoded = encodeMessage(data) @@ -189,6 +197,12 @@ function createWebSocket() { } }, onEvent: (event_type: SocketEvent, listener: (data: unknown) => void): (() => void) => { + let listeners = event_listeners.get(event_type) + if (!listeners) { + listeners = new Set() + event_listeners.set(event_type, listeners) + } + listeners.add(listener) return () => { unsubscribe_event(event_type, listener) }