Browse Source

退出强制退出

gemercheung 2 years ago
parent
commit
39476a6419

+ 16 - 0
src/components/chatRoom/controls/actions.ts

@@ -212,8 +212,24 @@ const handleUserMuted = (UserId?: string, muted?: boolean, members?: UserInfoTyp
 
 //被动处理用离开
 const handleUserLeave = (user: UserInfoType, members: UserInfoType[]) => {
+  console.log('有人离开了', user);
   const rtcStore = useRtcStore();
+  let name = user.Nickname;
+  if (user.Role == 'leader') {
+    name = '';
+    Dialog.toast({ content: `主持人离开了房间` });
+  }
+
+  const data = {
+    role: user.Role,
+    mode: '',
+    Nickname: name,
+    UserId: user.UserId,
+    text: '离开房间',
+  };
+
   console.log('members', user, members);
+  rtcStore.addToChatList(data);
   members && rtcStore.setMemberList(members);
 };
 //被动处理用离开

+ 13 - 1
src/components/chatRoom/memberList.vue

@@ -50,8 +50,9 @@
   import { propTypes } from '/@/utils/propTypes';
   import { UserInfoType, useRtcStore } from '/@/store/modules/rtc';
   import defaultAvatar from '/@/assets/images/rtcLive/avatar_small@2x.png';
-  import { computed, watchEffect } from 'vue';
+  import { computed, unref, watch, watchEffect } from 'vue';
   import { useSocket } from '/@/hooks/userSocket';
+  import Dialog from '../basic/dialog';
   const rtcStore = useRtcStore();
 
   const role = computed(() => rtcStore.role);
@@ -74,6 +75,17 @@
   watchEffect(() => {
     console.log('memberList', props.data);
   });
+  watch(
+    () => props.data,
+    (val) => {
+      if (val.length > 3 && unref(role) == 'customer') {
+        Dialog.toast({ content: `房间已满员` });
+        const { closeSocket } = useSocket();
+        closeSocket();
+      }
+    },
+    { deep: true },
+  );
   const emit = defineEmits(['openMember', 'closeMember']);
 
   function closeMember(): void {

+ 4 - 1
src/hooks/userSocket.ts

@@ -34,6 +34,9 @@ async function closeSocket() {
   if (rtcStore.isLeader) {
     socket.emit('action', { type: 'leader-dismiss' });
   }
+  console.log('socket', socket);
+  socket.emit('disconnected');
+  console.log('socket', socket.connected);
   rtcStore.clearMemberList();
   setTimeout(() => {
     createNewURLEntry({
@@ -44,7 +47,7 @@ async function closeSocket() {
       roomId: rtcStore.roomId,
       avatar: '',
     });
-    // location.reload();
+    location.reload();
   }, 100);
 }