gemercheung 2 年之前
父節點
當前提交
e762281442
共有 2 個文件被更改,包括 44 次插入16 次删除
  1. 35 16
      src/hooks/useTRTC.ts
  2. 9 0
      src/store/modules/rtc.ts

+ 35 - 16
src/hooks/useTRTC.ts

@@ -343,38 +343,51 @@ function handleStreamAdded(event) {
 async function handleStreamSubscribed(event) {
   const remoteStream = event.stream;
   const rtcStore = useRtcStore();
-  const { t } = useI18n();
+  // const { t } = useI18n();
+  debugger;
   const remoteUserId = remoteStream.getUserId();
   const remoteId = remoteStream.getId();
   if (remoteUserId == rtcStore.userId) {
     return;
   }
 
-  if (!rtcStore.isUserInRemoteStream(remoteUserId)) {
+  if (!rtcStore.isIdInRemoteStream(remoteId)) {
+    consola.info({
+      message: remoteId,
+      tag: 'rtc:audio',
+    });
     rtcStore.pushRemoteStreams(remoteStream);
     // debugger
   }
   await nextTick();
   setTimeout(async () => {
     try {
-      await remoteStream.play(remoteId);
       consola.info({
-        message: '客音源',
+        message: '客音源-->' + remoteId,
+        tag: 'rtc:audio',
+      });
+      consola.info({
+        message: rtcStore.remoteStreams,
         tag: 'rtc:audio',
       });
+      await remoteStream.play(remoteId);
     } catch (error) {
       // remoteStream.resume();
-      rtcStore.showBaseDialog(
-        {
-          title: t('base.tips'),
-          desc: t('base.audioPermission'),
-          okTxt: t('base.confirm'),
-          closeTxt: t('base.cancel'),
-        },
-        () => {
-          remoteStream.resume();
-        },
-      );
+      // rtcStore.showBaseDialog(
+      //   {
+      //     title: t('base.tips'),
+      //     desc: t('base.audioPermission'),
+      //     okTxt: t('base.confirm'),
+      //     closeTxt: t('base.cancel'),
+      //   },
+      //   () => {
+      //     consola.info({
+      //       message: 'resume',
+      //       tag: 'rtc:audio',
+      //     });
+      //     remoteStream.resume();
+      //   },
+      // );
       // Dialog.confirm({
       //   showCloseIcon: false,
       //   okText: '确定',
@@ -428,7 +441,13 @@ async function handleStreamSubscribed(event) {
 function handleStreamRemoved(event) {
   const remoteStream = event.stream;
   const userId = remoteStream.getUserId();
-  console.log(`RemoteStream removed: [${userId}]`);
+  const remoteStreamId = remoteStream.getId();
+  consola.info({
+    message: `RemoteStream removed: [${userId},${remoteStreamId}]`,
+    tag: 'rtc:audio',
+  });
+  const rtcStore = useRtcStore();
+  rtcStore.removeRemoteStreams(remoteStreamId);
 }
 
 function handleStreamUpdated(event) {

+ 9 - 0
src/store/modules/rtc.ts

@@ -153,6 +153,11 @@ export const useRtcStore = defineStore({
       });
       return userSig;
     },
+    isIdInRemoteStream() {
+      return (userId: string) => {
+        return this.remoteStreams.some((item) => item.getId() === userId);
+      };
+    },
     isUserInRemoteStream() {
       return (userId: string) => {
         return this.remoteStreams.some((item) => item.getUserId() === userId);
@@ -293,6 +298,10 @@ export const useRtcStore = defineStore({
     removeRemoteStreams(id: string) {
       const existStreamIndex = this.remoteStreams.findIndex((stream) => stream.getId() === id);
       if (existStreamIndex > -1) {
+        consola.info({
+          message: `handleRemoveIdByRemoteStream: index->${existStreamIndex}`,
+          tag: 'rtc:audio',
+        });
         this.remoteStreams.splice(existStreamIndex, 1);
       }
     },