diff --git a/src/lib/stores/index.ts b/src/lib/stores/index.ts index a2a42a2569..db779a7b84 100644 --- a/src/lib/stores/index.ts +++ b/src/lib/stores/index.ts @@ -29,6 +29,7 @@ export const MODEL_DOWNLOAD_POOL = writable({}); export const mobile = writable(false); export const socket: Writable = writable(null); +export const socketConnected: Writable = writable(true); export const activeUserIds: Writable = writable(null); export const activeChatIds: Writable> = writable(new Set()); export const USAGE_POOL: Writable = writable(null); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 2902f1f08d..0dc8170eef 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -19,6 +19,7 @@ WEBUI_DEPLOYMENT_ID, mobile, socket, + socketConnected, chatId, chats, currentChatPage, @@ -127,8 +128,17 @@ console.log('connect_error', err); }); + let hasConnectedOnce = false; + _socket.on('connect', async () => { console.log('connected', _socket.id); + + if (hasConnectedOnce) { + socketConnected.set(true); + toast.success($i18n.t('Reconnected')); + } + hasConnectedOnce = true; + const res = await getVersion(localStorage.token); const deploymentId = res?.deployment_id ?? null; @@ -182,6 +192,8 @@ _socket.on('disconnect', (reason, details) => { console.log(`Socket ${_socket.id} disconnected due to ${reason}`); + socketConnected.set(false); + toast.warning($i18n.t('Connection lost. Reconnecting...')); if (heartbeatInterval) { clearInterval(heartbeatInterval);