diff --git a/frontend/js/websocket.js b/frontend/js/websocket.js index dbabe67..d453a70 100644 --- a/frontend/js/websocket.js +++ b/frontend/js/websocket.js @@ -2,7 +2,7 @@ import { buttonResults } from '../resources/vue/stores/buttonResults.js' import { rateLimits } from '../resources/vue/stores/rateLimits.js' import { connectionState } from '../resources/vue/stores/connectionState.js' -const RECONNECT_DELAY_MS = 3000 +const RECONNECT_DELAY_MS = 10000 export function initWebsocket () { window.addEventListener('EventOutputChunk', onOutputChunk) @@ -21,12 +21,17 @@ async function reconnectWebsocket () { connectionState.reconnecting = true connectionState.connected = false + connectionState.disconnectedAt = Date.now() + connectionState.nextReconnectAt = null try { window.websocketAvailable = true - for await (const e of window.client.eventStream()) { - connectionState.connected = true - connectionState.reconnecting = false + const stream = window.client.eventStream() + connectionState.connected = true + connectionState.reconnecting = false + connectionState.disconnectedAt = null + connectionState.nextReconnectAt = null + for await (const e of stream) { handleEvent(e) } } catch (err) { @@ -35,6 +40,8 @@ async function reconnectWebsocket () { window.websocketAvailable = false connectionState.connected = false + connectionState.disconnectedAt = connectionState.disconnectedAt ?? Date.now() + connectionState.nextReconnectAt = Date.now() + RECONNECT_DELAY_MS console.log('Reconnecting websocket in ' + RECONNECT_DELAY_MS + 'ms...') setTimeout(() => { reconnectWebsocket() diff --git a/frontend/resources/vue/App.vue b/frontend/resources/vue/App.vue index 82830d7..dccdaa0 100644 --- a/frontend/resources/vue/App.vue +++ b/frontend/resources/vue/App.vue @@ -7,6 +7,7 @@