gemercheung 2 years ago
parent
commit
bb485f046e

+ 3 - 1
src/components/chatRoom/controls/actions.ts

@@ -127,8 +127,10 @@ function handleUserJoin(members?: UserInfoType[], user?: UserInfoType) {
     message: '有人进来了',
   });
   const rtcStore = useRtcStore();
-
+  // const { closeSocket } = useSocket();
   members && rtcStore.setMemberList(members);
+
+
   if (user) {
     let name = user.Nickname;
     if (user.Role === 'leader') {

+ 20 - 4
src/components/chatRoom/controls/join.ts

@@ -1,5 +1,5 @@
 import consolaGlobalInstance from 'consola';
-// import Dialog from '/@/components/basic/dialog';
+import Dialog from '/@/components/basic/dialog';
 // import { getApp } from '/@/hooks/userApp';
 import { useRoom } from '/@/hooks/useRoom';
 import { useSocket } from '/@/hooks/userSocket';
@@ -9,17 +9,20 @@ const { enterRoom } = useRoom();
 // 自已join的方法
 export function handleJoin(data: any) {
   // const app = getApp();
-  const { socket } = useSocket();
+  const { socket, closeSocket } = useSocket();
   const members = data?.members as any as UserInfoType[];
   const user = data?.user as any as UserInfoType;
-  enterRoom();
-
   const rtcStore = useRtcStore();
+
+  const userExsit = rtcStore.checkUserInMemberList(rtcStore.userId)
+
+  enterRoom();
   rtcStore.setIsJoined(true);
   consolaGlobalInstance.info({
     message: data,
     tag: 'socket:enter',
   });
+
   if (user) {
     console.log('gem1', rtcStore.userId);
     console.log('gem2', rtcStore.memberList);
@@ -40,6 +43,19 @@ export function handleJoin(data: any) {
   }
 
   members && rtcStore.setMemberList(members);
+
+  console.log('gem', rtcStore.memberList.length, userExsit);
+
+  if (rtcStore.memberList.length > 3) {
+    if (rtcStore.role === 'customer') {
+      Dialog.toast({ content: `房间已满员,当前角色${user.UserId}` });
+      setTimeout(() => {
+        closeSocket();
+      }, 1500);
+      return;
+    }
+  }
+
   if (!rtcStore.isLeader) {
     setTimeout(() => {
       socket.emit('action', {

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

@@ -50,9 +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, unref, watch, watchEffect } from 'vue';
+  import { computed, watchEffect } from 'vue';
   import { useSocket } from '/@/hooks/userSocket';
-  import Dialog from '../basic/dialog';
+  // import Dialog from '../basic/dialog';
   const rtcStore = useRtcStore();
 
   const role = computed(() => rtcStore.role);
@@ -75,17 +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 },
-  );
+  // 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 {