GLMPilot / packages /client /src /hooks /useWebSocket.ts
E5K7's picture
Initial commit: Rebranded to GLMPilot and migrated to GLM-5 API
c2c8c8d
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 };
}