File size: 1,297 Bytes
b87757e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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']);
	});
};