From 70ff5e79c5063aa7194dbaa79c40a7ee8607695b Mon Sep 17 00:00:00 2001 From: arabcoders Date: Wed, 12 Nov 2025 18:08:43 +0300 Subject: [PATCH] refactor: improve messaging about websocket errors --- ui/app/layouts/default.vue | 12 +++++++++--- ui/app/stores/SocketStore.ts | 15 ++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ui/app/layouts/default.vue b/ui/app/layouts/default.vue index 7242880e..ca644ae0 100644 --- a/ui/app/layouts/default.vue +++ b/ui/app/layouts/default.vue @@ -154,13 +154,19 @@
-

Loading application configuration. This usually takes less than a second.

If this is taking too long, please check that the backend server is running and that the WebSocket connection is functional.

+

+ + + {{ socket.error }} + +

@@ -182,8 +188,8 @@ - README - API - - - Top + + Top
diff --git a/ui/app/stores/SocketStore.ts b/ui/app/stores/SocketStore.ts index b8060a1b..93363044 100644 --- a/ui/app/stores/SocketStore.ts +++ b/ui/app/stores/SocketStore.ts @@ -13,6 +13,7 @@ export const useSocketStore = defineStore('socket', () => { const socket = ref(null) const isConnected = ref(false) const connectionStatus = ref('disconnected') + const error = ref(null) const emit = (event: string, data?: any): any => socket.value?.emit(event, data) const on = (event: string | string[], callback: (...args: any[]) => void, withEvent: boolean = false) => { @@ -72,16 +73,26 @@ export const useSocketStore = defineStore('socket', () => { connectionStatus.value = 'connecting'; socket.value = io(url, opts) - on("connect_error", (e: any) => console.error("Socket connection error:", e)); + on("connect_error", (e: any) => { + isConnected.value = false + if (null === e || undefined === e) { + error.value = 'Connection error: Unknown error'; + return; + } + error.value = `Connection error: ${e.type || 'Unknown'}: ${e.message || 'Unknown error'}`; + }); + on('connect', () => { isConnected.value = true connectionStatus.value = 'connected'; + error.value = null; }); on('disconnect', () => { isConnected.value = false connectionStatus.value = 'disconnected'; + error.value = 'Disconnected from server.'; }); on('configuration', stream => { @@ -100,6 +111,7 @@ export const useSocketStore = defineStore('socket', () => { config.add('folders', json.data.folders) stateStore.addAll('queue', json.data.queue || {}) stateStore.addAll('history', json.data.done || {}) + error.value = null; }) on('item_added', stream => { @@ -215,5 +227,6 @@ export const useSocketStore = defineStore('socket', () => { socket, isConnected, getSessionId, connectionStatus: readonly(connectionStatus) as Readonly>, + error: readonly(error) as Readonly>, }; });