tremble 3 年 前
コミット
c97b07fa48

+ 31 - 20
src/components/RTC/PageRtcLive.vue

@@ -163,8 +163,8 @@ const isBrushes = ref(false);
 const hideVideo = ref(false);
 const hideVideoBottom = ref(false);
 const hideVideoTop = ref(true);
-const hideMic = ref(false);
-const hideMicTop = ref(false);
+const hideMic = ref(true);
+const hideMicTop = ref(true);
 const showInput = ref(false);
 const showMember = ref(false);
 const animateActive = ref(false);
@@ -207,30 +207,16 @@ const userGetOut = (item,i) => {
 };
 
 const setUserWords = (res) => {
-  if (user_info.value.Role == "leader") {
-    user_list.value = res.members.reduce(function (tempArr, item) {
-      if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
-        tempArr.push(item);
-      }
-      return tempArr;
-    }, []);
-  }
   if (res.userId == user_info.value.UserId) {
     user_info.value.IsWords = res.words;
   }
 };
 
 const setUserMuted = (res) => {
-  if (user_info.value.Role == "leader") {
-    user_list.value = res.members.reduce(function (tempArr, item) {
-      if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
-        tempArr.push(item);
-      }
-      return tempArr;
-    }, []);
-  }
   if (res.userId == user_info.value.UserId) {
     user_info.value.IsMuted = res.muted;
+    disableMic.value = res.muted
+    hideMic.value = res.muted
   }
 };
 
@@ -367,6 +353,21 @@ const onMemberMuted = (item) => {
   socket.value.emit("action", { type: "users-muted", muted: item.IsMuted, userId: item.UserId });
 };
 
+const onMemberLeave = (res) => {
+  console.log("有人离开了", res);
+  user_list.value = res.members.reduce(function (tempArr, item) {
+    if (tempArr.findIndex((ele) => ele.UserId === item.UserId) === -1) {
+      tempArr.push(item);
+    }
+    return tempArr;
+  }, []);
+  if (res.user.Role == "leader") {
+    Dialog.toast({ content: `房间解散` });
+    // emit("closeSocket");
+  }
+};
+
+
 const userCanSpeak = (item) => {
   item.IsWords = !item.IsWords;
   socket.value.emit("action", { type: "users-words", words: item.IsWords, userId: item.UserId });
@@ -459,6 +460,7 @@ const startFollow = (app) => {
   socket.value.on("action", (data) => {
     if (data.type == "error") {
       Dialog.toast({ content: `房间未找到`, type: "error" });
+      emit("closeSocket");
     } else if (data.type == "danmumsg") {
       setReceiveMsg(data.data);
     } else if (data.type == "getout") {
@@ -482,17 +484,26 @@ const startFollow = (app) => {
     } else if (data.type == "users-words") {
       setUserWords(data);
       //禁言
+    } else if (data.type == "user-leave") {
+      // 房间解散
+      onMemberLeave(data)
     }
+
+
   });
 
   // 同屏带看
   socket.value.on("sync", (data) => {
-    app.Connect.follow.receive(data);
+    if (role.value=='customer') {
+      app.Connect.follow.receive(data);
+    }
   });
 
   // 画笔
   socket.value.on("paint", (data) => {
-    app.Connect.paint.receive(data);
+    if (role.value=='customer') {
+      app.Connect.paint.receive(data);
+    }
   });
 };
 

+ 0 - 1
src/components/RTC/dialog/index.vue

@@ -42,7 +42,6 @@ const endLiveCancel = () => {
 };
 
 const endLiveConfirm = () => {
-  store.commit("rtc/setSocket", {});
   // socket.value.emit("disconnect");
   emit("confirmDialog");
 };

+ 11 - 8
src/components/RTC/index.vue

@@ -4,7 +4,7 @@
       <dialogIndex @closeDialog="closeDialog" @confirmDialog="confirmDialog" v-if="dialog == 'dialogIndex'"></dialogIndex>
       <dialogShare :shareLink="shareLink" @closeDialog="closeDialog" v-if="dialog == 'dialogShare'"></dialogShare>
       <createdRoom v-if="showCreated" @closeCreated="closeCreated" @createdConfirm="createdConfirm()"></createdRoom>
-      <PageRtcLive  @closeSocket="confirmDialog" @openDialog="openDialog" v-if="show"></PageRtcLive>
+      <PageRtcLive @closeSocket="confirmDialog" @openDialog="openDialog" v-if="show"></PageRtcLive>
     </div>
   </transition>
 </template>
@@ -30,6 +30,7 @@ const showCreated = ref(false);
 const roomId = ref(browser.getURLParam("roomId"));
 const role = ref(browser.getURLParam("role"));
 const userName = ref(browser.getURLParam("name"));
+const socket = computed(() => store.getters["rtc/socket"]);
 
 const openDialog = (str, link) => {
   shareLink.value = link;
@@ -42,9 +43,13 @@ const closeDialog = (str, link) => {
 
 const confirmDialog = async () => {
   await getApp().Connect.follow.exit();
-  store.commit("showShoppingguide", false);
+  if (socket.value) {
+    console.log(socket.value);
+    socket.value.close();
+    store.commit("rtc/setSocket", null);
+  }
   let tempUrl = window.location.href;
-  ["mode", "name", "role", "roomId","userId"].forEach((item) => {
+  ["mode", "name", "role", "roomId", "userId"].forEach((item) => {
     tempUrl = browser.replaceQueryString(tempUrl, item, "");
   });
   history.replaceState(null, null, tempUrl);
@@ -63,14 +68,12 @@ const createdConfirm = (str, link) => {
   show.value = true;
 };
 
-
-
 onMounted(() => {
   useApp().then(async (sdk) => {
-    await nextTick()
+    await nextTick();
     if (userName.value) {
-      createdConfirm()
-    }else{
+      createdConfirm();
+    } else {
       showCreated.value = true;
     }
   });

+ 1 - 1
src/store/modules/rtc.js

@@ -5,7 +5,7 @@ export default {
     namespaced: true,
     state() {
         return {
-            socket: {},
+            socket: null,
             showdaogou: false
         }
     },