import { io } from 'socket.io-client'; import { socket, activeUserIds, USAGE_POOL } from '$lib/stores'; import { WEBUI_BASE_URL } from '$lib/constants'; export const setupSocket = async (enableWebsocket) => { const _socket = io(`${WEBUI_BASE_URL}` || undefined, { reconnection: true, reconnectionDelay: 1000, reconnectionDelayMax: 5000, randomizationFactor: 0.5, path: '/ws/socket.io', transports: enableWebsocket ? ['websocket'] : ['polling', 'websocket'], auth: { token: localStorage.token } }); await socket.set(_socket); _socket.on('connect_error', (err) => { console.log('connect_error', err); }); _socket.on('connect', () => { console.log('connected', _socket.id); }); _socket.on('reconnect_attempt', (attempt) => { console.log('reconnect_attempt', attempt); }); _socket.on('reconnect_failed', () => { console.log('reconnect_failed'); }); _socket.on('disconnect', (reason, details) => { console.log(`Socket ${_socket.id} disconnected due to ${reason}`); if (details) { console.log('Additional details:', details); } }); _socket.on('user-list', (data) => { console.log('user-list', data); activeUserIds.set(data.user_ids); }); _socket.on('usage', (data) => { console.log('usage', data); USAGE_POOL.set(data['models']); }); };