Spaces:
Running
Running
File size: 1,232 Bytes
07ed12b 5c0862e 07ed12b dd96d2f 07ed12b | 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 | import { io, type Socket } from 'socket.io-client';
let _socket: Socket | null = null;
export function backendUrl(): string {
if (typeof window === 'undefined') return 'http://localhost:8000';
// VITE_BACKEND_URL overrides (e.g. for dev: http://localhost:8000).
// In dev, use backend origin so /static and /sprites are served correctly (proxy can return HTML otherwise).
if (import.meta.env.VITE_BACKEND_URL) return import.meta.env.VITE_BACKEND_URL;
const origin = window.location.origin;
if (origin === 'http://localhost:5173' || origin === 'http://127.0.0.1:5173') return 'http://localhost:8000';
return origin;
}
export function getSocket(): Socket {
if (!_socket) {
_socket = io(backendUrl(), {
transports: ['websocket', 'polling'],
reconnectionAttempts: 5,
reconnectionDelay: 1500,
});
_socket.on('connect', () => console.log('[socket] connected', _socket?.id));
_socket.on('disconnect', (reason) => console.log('[socket] disconnected', reason));
_socket.on('connect_error', (err) => console.error('[socket] error', err.message));
}
return _socket;
}
export function disconnectSocket(): void {
if (_socket) {
_socket.disconnect();
_socket = null;
}
}
|