Spaces:
Starting
Starting
| 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; | |
| } | |
| } | |