flwo / client /src /features /chat /socketClient.js
moustafa7's picture
Fix socket real-time: rate limiter per API, transports, reconnection
4b59f7c
Raw History Blame Contribute Delete
870 Bytes
import { io } from 'socket.io-client'
const SOCKET_URL = import.meta.env.VITE_SOCKET_URL || undefined
let socket = null
let currentToken = null
export function connectSocket(token) {
if (socket?.connected && currentToken === token) return socket
if (socket) socket.disconnect()
socket = io(SOCKET_URL, {
auth: { token },
transports: ['websocket', 'polling'],
reconnection: true,
reconnectionAttempts: Infinity,
reconnectionDelay: 1000,
reconnectionDelayMax: 5000,
})
socket.on('connect_error', (err) => {
console.warn('Socket connection error:', err.message)
})
currentToken = token
return socket
}
export function getSocket() {
return socket
}
export function disconnectSocket() {
if (socket) { socket.disconnect(); socket = null; currentToken = null }
}
export function getCurrentToken() {
return currentToken
}