Преглед изворни кода

只在有 classroom 参数时才连接 socket

yourname пре 6 месеци
родитељ
комит
6f48d64b5d

+ 16 - 16
client/mobile/components/stock/hooks/useStockSocketClient.ts

@@ -11,14 +11,14 @@ interface ExamData {
 }
 
 interface StockSocketClient {
-  connect(): void;
-  disconnect(): void;
+  // connect(): void;
+  // disconnect(): void;
   pushExamData(data: { roomId: string; question: { date: string; price: number } }): void;
   error: Error | null;
   isConnected: boolean;
 }
 
-export function useStockSocket(): StockSocketClient {
+export function useStockSocket(classRoom: string | null): StockSocketClient {
   const { token } = useAuth();
   const [socket, setSocket] = useState<Socket | null>(null);
   const [error, setError] = useState<Error | null>(null);
@@ -26,7 +26,7 @@ export function useStockSocket(): StockSocketClient {
 
   // 初始化socket连接
   useEffect(() => {
-    if (!token) return;
+    if (!token || !classRoom) return;
 
     const newSocket = io('/', {
       path: '/socket.io',
@@ -62,17 +62,17 @@ export function useStockSocket(): StockSocketClient {
     };
   }, [token]);
 
-  const connect = useCallback(() => {
-    if (socket && !socket.connected) {
-      socket.connect();
-    }
-  }, [socket]);
+  // const connect = useCallback(() => {
+  //   if (socket && !socket.connected) {
+  //     socket.connect();
+  //   }
+  // }, [socket]);
 
-  const disconnect = useCallback(() => {
-    if (socket && socket.connected) {
-      socket.disconnect();
-    }
-  }, [socket]);
+  // const disconnect = useCallback(() => {
+  //   if (socket && socket.connected) {
+  //     socket.disconnect();
+  //   }
+  // }, [socket]);
 
   const pushExamData = useCallback((data: ExamData) => {
     if (socket) {
@@ -87,8 +87,8 @@ export function useStockSocket(): StockSocketClient {
   }, [socket]);
 
   return {
-    connect,
-    disconnect,
+    // connect,
+    // disconnect,
     pushExamData,
     error,
     isConnected,

+ 5 - 30
client/mobile/components/stock/stock_main.tsx

@@ -9,18 +9,14 @@ import { ActiveType } from "./components/stock-chart/src/types/index.ts";
 export function StockMain() {
   const chartRef = useRef<StockChartRef>(null);
   const [searchParams] = useSearchParams();
+  const codeFromUrl = searchParams.get('code');
+  const [stockCode, setStockCode] = useState(codeFromUrl || undefined);//|| '001339'
+  const classroom = searchParams.get('classroom');
   const {
-    connect,
-    disconnect,
     pushExamData,
     error,
     isConnected
-  } = useStockSocket();
-  const codeFromUrl = searchParams.get('code');
-  const [stockCode, setStockCode] = useState(codeFromUrl || '001339' || undefined);//
-  const classroom = searchParams.get('classroom');
-//   const { connected } = useSocketRoom(classroom);
-//   const { sendNextQuestion } = useQuestionManagement(classroom);
+  } = useStockSocket(classroom);
   
   const { 
     stockData: fullStockData, 
@@ -52,19 +48,6 @@ export function StockMain() {
     }
   }, [moveToNextDay, updateCurrentDate, profitSummary, pushExamData]);
 
-//   useEffect(() => {
-//     const currentDate = profitSummary.dailyStats.date;
-//     if (classroom && connected && currentDate && lastSentDateRef.current !== currentDate) {
-//       lastSentDateRef.current = currentDate;
-//       sendNextQuestion({
-//         date: currentDate,
-//         price: profitSummary.dailyStats.close
-//       }).catch(() => {
-//         message.error('发送题目失败');
-//       });
-//     }
-//   }, [classroom, connected, profitSummary.dailyStats, sendNextQuestion]);
-
   useEffect(() => {
     const currentDate = profitSummary.dailyStats.date;
     if (classroom && isConnected && currentDate ) {
@@ -110,14 +93,6 @@ export function StockMain() {
     chartRef.current?.clearDrawings();
   }, []);
 
-  // 管理socket连接生命周期
-  useEffect(() => {
-    connect();
-    return () => {
-      disconnect();
-    };
-  }, [connect, disconnect]);
-
   // 错误处理
   useEffect(() => {
     if (error) {
@@ -171,7 +146,7 @@ export function StockMain() {
 
   return (
     <div className="flex flex-col h-screen bg-gray-900">
-      {!isConnected && (
+      {!isConnected && classroom && (
         <div className="bg-yellow-600 text-white text-center py-1 text-sm">
           正在尝试连接答题卡服务...
         </div>