ソースを参照

在joinClass方法中加入了joinRtcChannel调用
在leaveClass方法中将leaveChannel调用改为leaveRtcChannel
完善了相关错误处理逻辑

yourname 7 ヶ月 前
コミット
4cc1382d6b
1 ファイル変更25 行追加8 行削除
  1. 25 8
      client/mobile/pages_classroom.tsx

+ 25 - 8
client/mobile/pages_classroom.tsx

@@ -474,26 +474,43 @@ export const ClassroomPage = () => {
       listenMessageEvents();
       listenMessageEvents();
       listenRtcEvents();
       listenRtcEvents();
 
 
+      // 加入RTC频道
+      await joinRtcChannel();
+
       setIsJoinedClass(true);
       setIsJoinedClass(true);
       setErrorMessage('');
       setErrorMessage('');
       showToast('success', '加入课堂成功');
       showToast('success', '加入课堂成功');
     } catch (err: any) {
     } catch (err: any) {
       setErrorMessage(`加入课堂失败: ${err.message}`);
       setErrorMessage(`加入课堂失败: ${err.message}`);
       showToast('error', '加入课堂失败');
       showToast('error', '加入课堂失败');
+      
+      // 如果IM加入成功但RTC加入失败,需要离开IM群组
+      if (imGroupManager.current) {
+        try {
+          await imGroupManager.current.leaveGroup(classId);
+        } catch (leaveErr) {
+          console.error('离开IM群组失败:', leaveErr);
+        }
+      }
     }
     }
   };
   };
 
 
   // 离开课堂
   // 离开课堂
   const leaveClass = async (): Promise<void> => {
   const leaveClass = async (): Promise<void> => {
-    if (imGroupManager.current && classId) {
-      await imGroupManager.current.leaveGroup(classId);
-    }
-    if (aliRtcEngine.current) {
-      await aliRtcEngine.current.leaveChannel();
+    try {
+      if (imGroupManager.current && classId) {
+        await imGroupManager.current.leaveGroup(classId);
+      }
+      if (aliRtcEngine.current) {
+        await leaveRtcChannel();
+      }
+      
+      setIsJoinedClass(false);
+      showToast('info', '已离开课堂');
+    } catch (err) {
+      console.error('离开课堂失败:', err);
+      showToast('error', '离开课堂时发生错误');
     }
     }
-    
-    setIsJoinedClass(false);
-    showToast('info', '已离开课堂');
   };
   };
 
 
   // 发送消息
   // 发送消息