import { io, Socket } from 'socket.io-client'; import { getToken } from './auth'; let socket: Socket | null = null; export function getSocket(): Socket | null { return socket; } export function connectSocket(): Socket { if (socket?.connected) { return socket; } const token = getToken(); socket = io(window.location.origin, { auth: { token }, transports: ['websocket', 'polling'], reconnection: true, reconnectionAttempts: 10, reconnectionDelay: 1000, }); 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] connection error:', err.message); }); return socket; } export function disconnectSocket(): void { if (socket) { socket.disconnect(); socket = null; } } export { Socket };