2
0
Эх сурвалжийг харах

增加 isConnected 提示

yourname 6 сар өмнө
parent
commit
f518f29eee

+ 6 - 3
client/mobile/components/Exam/ExamAdmin.tsx

@@ -74,9 +74,7 @@ export default function ExamAdmin() {
   const {
     socketRoom: { joinRoom, leaveRoom, client },
     answerManagement,
-    // currentQuestion,
-    // setCurrentQuestion,
-    // calculateCumulativeResults
+    isConnected,
   } = useSocketClient(classroom as string);
 
   const [answers, setAnswers] = useState<Answer[]>([]);
@@ -386,6 +384,11 @@ export default function ExamAdmin() {
 
   return (
     <div className="p-6">
+      {!isConnected && (
+        <div className="bg-yellow-600 text-white text-center py-1 text-sm">
+          正在尝试连接答题卡服务...
+        </div>
+      )}
       <div className="mb-6 flex justify-between items-center">
         <div>
           <h2 className="text-2xl font-bold">答题卡管理</h2>

+ 6 - 1
client/mobile/components/Exam/ExamCard.tsx

@@ -22,7 +22,7 @@ export default function ExamCard() {
   const {
     socketRoom: { joinRoom, leaveRoom, client },
     answerManagement,
-    // lastMessage,
+    isConnected,
   } = useSocketClient(classroom as string);
   const [currentDate, setCurrentDate] = useState('');
   const [currentPrice, setCurrentPrice] = useState('0');
@@ -255,6 +255,11 @@ export default function ExamCard() {
 
   return (
     <div className="flex flex-col items-center min-h-screen bg-gray-100 py-8">
+      {!isConnected && (
+        <div className="bg-yellow-600 text-white text-center py-1 text-sm">
+          正在尝试连接答题卡服务...
+        </div>
+      )}
       {/* 选择区域 */}
       <div className="w-full max-w-2xl">
         <div className="text-center mb-8">

+ 6 - 5
client/mobile/components/Exam/hooks/useSocketClient.ts

@@ -58,10 +58,8 @@ function getAnswers(client: Socket | null, roomId: string, questionId: string):
 
 export function useSocketClient(roomId: string | null) {
   const { token } = useAuth();
-  // const queryClient = useQueryClient();
   const [socket, setSocket] = useState<Socket | null>(null);
-  // const [currentQuestion, setCurrentQuestion] = useState<QuizState | null>(null);
-  // const [lastMessage, setLastMessage] = useState<ExamSocketRoomMessage | null>(null);
+  const [isConnected, setIsConnected] = useState(false);
 
   // 初始化socket连接
   const { data: client } = useQuery({
@@ -83,10 +81,12 @@ export function useSocketClient(roomId: string | null) {
 
       newSocket.on('connect', () => {
         console.log('Socket connected');
+      setIsConnected(true);
       });
 
       newSocket.on('disconnect', () => {
         console.log('Socket disconnected');
+        setIsConnected(false);
       });
 
       newSocket.on('error', (error) => {
@@ -339,7 +339,7 @@ export function useSocketClient(roomId: string | null) {
   const sendSettleExam = async (roomId: string) => {
       if (!client) return;
       return handleAsyncOperation(async () => {
-        client.emit('exam:settle', roomId);
+        client.emit('exam:settle', { roomId });
       }, '发送结算消息失败');
     }
 
@@ -380,6 +380,7 @@ export function useSocketClient(roomId: string | null) {
     // setCurrentQuestion,
     // lastMessage,
     ...socketRoom,
-    ...answerManagement
+    ...answerManagement,
+    isConnected,
   };
 }