Browse Source

离开房间

gemercheung 3 years ago
parent
commit
cd77557fab
2 changed files with 24 additions and 19 deletions
  1. 1 1
      src/controller/connectController.js
  2. 23 18
      src/controller/room/assistant.js

+ 1 - 1
src/controller/connectController.js

@@ -20,7 +20,7 @@ export class ConnectController extends BasicController {
       // if (res.includes("close") || res.includes("disconnect")) {
       if ([FROMTYPE.MiniAPP].includes(Number(this.roomController.user.from))) {
         this.roomController.logger.info("断开连接", { userId: this.roomController.userId, from: this.roomController.user.from });
-        this.roomController.roomAssistant.setRoomAvailableBySeconds(this.roomController.sessionId, 1 * 60);
+        this.roomController.roomAssistant.setRoomAvailableBySeconds(this.roomController.sessionId, 3 * 60);
         // this.roomController.roomAssistant.disconnect();
         this.roomController.roomAssistant.unWatchRoomExpired();
       }

+ 23 - 18
src/controller/room/assistant.js

@@ -110,25 +110,30 @@ export class RoomAssistant {
 
   /**
    * 离开房间
-   * @param {*} clientRoom
-   * @param {*} userUniqueId
-   * @param {*} roomUniqueId
+   * @param {*} roomId
+   * @param {*} userId
+   * @param {*} user
    */
   async leaveRoom(roomId, userId, user) {
-    this.room.logger.info("离开房间", userId);
-    await this.redis.hDel(roomId, userId);
-    const AllRoomUsers = await getAllRoomUsers(roomId);
-    const roomConfig = await getRoomConfig(roomId);
-    this.socket.broadcast.to(roomId).emit(EVENT.roomOut, {
-      user,
-      roomsPerson: AllRoomUsers,
-      roomsConfig: roomConfig,
-    });
-    this.socket.broadcast.to(roomId).emit(EVENT.someOneLeaveRoom, {
-      user,
-      roomsPerson: AllRoomUsers,
-    });
-    await this.socket.leave(roomId);
+    try {
+      await this.redis.hDel(roomId, userId);
+      this.room.logger.info("离开房间", userId, AllRoomUsers);
+      const AllRoomUsers = await getAllRoomUsers(roomId);
+      const roomConfig = await getRoomConfig(roomId);
+      this.socket.broadcast.to(roomId).emit(EVENT.roomOut, {
+        user,
+        roomsPerson: AllRoomUsers,
+        roomsConfig: roomConfig,
+      });
+
+      this.socket.broadcast.to(roomId).emit(EVENT.someOneLeaveRoom, {
+        user,
+        roomsPerson: AllRoomUsers,
+      });
+      await this.socket.leave(roomId);
+    } catch (error) {
+      console.log("leaveRoom::error", error);
+    }
   }
 
   /**
@@ -227,7 +232,7 @@ export class RoomAssistant {
   watchRoomExpired(callback) {
     subClient.subscribe("__keyevent@0__:expired", this.watchRoomExpiredFn);
   }
-  watchRoomExpiredFn(key) {
+  async watchRoomExpiredFn(key) {
     console.log("key=> ", key);
   }
   unWatchRoomExpired() {