'use client'; import { useEffect, useRef } from 'react'; import { useSignalRContext } from '@/contexts/signalrProvider'; export default function useMarketData(market: string) { const { cryptoConnection, cryptoConnected } = useSignalRContext(); const prevMarketRef = useRef(null); useEffect(() => { if (!cryptoConnection || !cryptoConnected || !market) { return; } // 이전 마켓 구독 해제 if (prevMarketRef.current && prevMarketRef.current !== market) { cryptoConnection.invoke('UnsubscribeMarket', prevMarketRef.current).catch(() => {}); } // 새 마켓 구독 cryptoConnection.invoke('SubscribeMarket', market).catch(console.error); prevMarketRef.current = market; return () => { if (prevMarketRef.current) { cryptoConnection.invoke('UnsubscribeMarket', prevMarketRef.current).catch(() => {}); prevMarketRef.current = null; } }; }, [cryptoConnection, cryptoConnected, market]); }