浏览代码

passive leave room

gemercheung 3 年之前
父节点
当前提交
4f6b2984cd
共有 2 个文件被更改,包括 15 次插入11 次删除
  1. 3 3
      src/controller/roomController.js
  2. 12 8
      src/service/watchRoomService.js

+ 3 - 3
src/controller/roomController.js

@@ -90,7 +90,7 @@ const joinRoomAction = async (roomId, userId, user, socket) => {
  * @param {*} roomUniqueId
  * @param {*} socket
  */
-const leaveRoomAction = async (roomId, userId, user, socket) => {
+export const leaveRoomAction = async (roomId, userId, user, socket) => {
   logger.info("离开房间", userId);
   socket.leave(roomId);
   leaveRoom(roomId, userId);
@@ -118,10 +118,10 @@ export async function roomController(socket) {
   let user = socket.handshake.query;
   const { roomId, userId, sceneNum, isClient, role, userLimitNum, roomType, from } = user;
   if (user) {
-    const webRoomId = `${roomId}_${sceneNum}_web`;
+    // const webRoomId = `${roomId}_${sceneNum}_web`;
     // const clientRoom = `${userId}${roomId}`;
     const userUniqueId = `user-${userId}`;
-    const roomUniqueId = `room-${webRoomId}`;
+    const roomUniqueId = `room-${roomId}_${sceneNum}_web`;
     // const userLimitNum = userLimitNum || process.env.US
     if ("roomId" in user && "userId" in user) {
       const userObj = { ...user, isConnected: true };

+ 12 - 8
src/service/watchRoomService.js

@@ -2,20 +2,24 @@ import { pubClient } from "../connection/redis.js";
 import { logger } from "../core/logger.js";
 import { io } from "../core/io.js";
 import { FROMTYPE } from "../enum/index.js";
+import { leaveRoomAction } from "../controller/roomController.js";
 
 const passiveLeave = async (roomId, userId, socket) => {
   setTimeout(async () => {
     const isExistUser = await pubClient.exists(userId);
     if (isExistUser === 1) {
       const baseUser = await pubClient.hGetAll(userId);
-      const user = baseUser[FROMTYPE.MiniAPP];
-      if (user && user.isConnected) {
-        const isConnected = typeof user.isConnected === "string" ? JSON.parse(String(user.isConnected.toLowerCase())) : user.isConnected;
-        const from = user.from;
-        logger.info("passiveLeave", { userId, isConnected, from });
-        if (!isConnected && Number(from) === FROMTYPE.MiniAPP) {
-          console.log("10秒离开");
-        }
+      const user = JSON.parse(baseUser[FROMTYPE.MiniAPP]);
+      console.log("user-isConnected", user.isConnected);
+      if (user && !user.isConnected) {
+        const { userId, isConnected, from, roomId, sceneNum } = user;
+        console.log("user", user);
+        const roomUniqueId = `room-${roomId}_${sceneNum}_web`;
+        const userUniqueId = `user-${userId}`;
+        const isExistRoomUser = await pubClient.hVals(roomUniqueId, userUniqueId);
+        logger.info("passiveLeave", isExistRoomUser);
+        leaveRoomAction(roomUniqueId, userUniqueId, user, socket);
+        console.log("10秒离开");
       }
     }
   }, 10000);