gemercheung 2 سال پیش
والد
کامیت
2fea0a9664
2فایلهای تغییر یافته به همراه22 افزوده شده و 6 حذف شده
  1. 21 5
      src/room/room.service.ts
  2. 1 1
      src/socket/socket.gateway.ts

+ 21 - 5
src/room/room.service.ts

@@ -226,21 +226,37 @@ export class RoomService {
    */
   async handleKickAction(RoomId: string, userId: string) {
     const delUser = await this.userService.getUsersBy(RoomId, userId);
-    this.logger.warn(
-      `RoomId: ${RoomId},userId:${userId} socketId:${delUser.id}`,
-      'kick-user',
-    );
     const roomUsers = await this.userService.getRoomUsers(RoomId);
     const filterRoomUser = roomUsers.filter((i) => i.UserId !== userId);
     if (delUser) {
       this.socketGateway.server.sockets.sockets.forEach((soc) => {
-        if (soc.id === delUser.id) {
+        const kickAction = () => {
           soc.data.isKick = 1;
           soc.emit('action', {
             type: 'user-be-kicked',
             user: delUser,
           });
           soc.disconnect(true);
+        };
+
+        if (soc.data.user) {
+          const userId = soc.data.user.UserId;
+          if (userId === delUser.UserId) {
+            this.logger.warn(
+              `RoomId: ${RoomId},userId:${userId} socketId:${delUser.id}`,
+              'kick-user-userId',
+            );
+            kickAction();
+          }
+        } else {
+          const userId = soc.id;
+          if (userId === delUser.UserId) {
+            this.logger.warn(
+              `RoomId: ${RoomId},userId:${userId} socketId:${delUser.id}`,
+              'kick-user-socketId',
+            );
+            kickAction();
+          }
         }
       });
     }

+ 1 - 1
src/socket/socket.gateway.ts

@@ -106,7 +106,7 @@ export class SocketGateway
     socket: Socket,
     message: UserInfoParams,
   ): Promise<boolean> {
-    const from = message.isClient ? 0 : 1;
+    const from = !!message.isClient ? 1 : 0;
     const flag = `${message.userId}-${from}`;
     socket.data.deviceId = flag;
     const redisFlag = `kankan:socket:deviceId`;