File size: 718 Bytes
c2c8c8d | 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 | import { useEffect, useRef, useState, useCallback } from 'react';
import { getSocket } from '@/services/socket';
export function useWebSocket() {
const [isConnected, setIsConnected] = useState(false);
const socketRef = useRef(getSocket());
useEffect(() => {
const socket = socketRef.current;
const onConnect = () => setIsConnected(true);
const onDisconnect = () => setIsConnected(false);
socket.on('connect', onConnect);
socket.on('disconnect', onDisconnect);
if (socket.connected) setIsConnected(true);
return () => {
socket.off('connect', onConnect);
socket.off('disconnect', onDisconnect);
};
}, []);
return { socket: socketRef.current, isConnected };
}
|