فهرست منبع

update action

gemercheung 3 سال پیش
والد
کامیت
fdef1b6263

+ 0 - 2
src/controller/basicController.js

@@ -2,11 +2,9 @@ import { pubClient } from "../connection/redis.js";
 import { EVENT } from "../enum/event.js";
 import { EVENT } from "../enum/event.js";
 import { roomController } from "./roomController.js";
 import { roomController } from "./roomController.js";
 import { syncActionController } from "./syncActionController.js";
 import { syncActionController } from "./syncActionController.js";
-import { SyncBaseViewActionController } from "./syncBaseViewController.js";
 
 
 export async function basicController(socket) {
 export async function basicController(socket) {
   //   webSyncAction(socket);
   //   webSyncAction(socket);
   await roomController(socket);
   await roomController(socket);
   await syncActionController(socket);
   await syncActionController(socket);
-  // await SyncBaseViewActionController(socket);
 }
 }

+ 9 - 6
src/controller/roomActionController.js

@@ -102,8 +102,7 @@ const joinRoomAction = async (roomId, userId, user, socket) => {
  */
  */
 const leaveRoomAction = async (roomId, userId, user, socket) => {
 const leaveRoomAction = async (roomId, userId, user, socket) => {
   logger.info("离开房间", userId);
   logger.info("离开房间", userId);
-  socket.leave(roomId);
-  await leaveRoom(roomId, userId);
+
   const AllRoomUsers = await getAllRoomUsers(roomId);
   const AllRoomUsers = await getAllRoomUsers(roomId);
   const roomConfig = await getRoomConfig(roomId);
   const roomConfig = await getRoomConfig(roomId);
   socket.broadcast.to(roomId).emit(EVENT.roomOut, {
   socket.broadcast.to(roomId).emit(EVENT.roomOut, {
@@ -115,6 +114,8 @@ const leaveRoomAction = async (roomId, userId, user, socket) => {
     user,
     user,
     roomsPerson: AllRoomUsers,
     roomsPerson: AllRoomUsers,
   });
   });
+  await socket.leave(roomId);
+  await leaveRoom(roomId, userId);
 };
 };
 
 
 /**
 /**
@@ -154,12 +155,15 @@ const disconnectAction = async (ids, socket, user) => {
 const startCallAction = async (roomId, userId, user, socket) => {
 const startCallAction = async (roomId, userId, user, socket) => {
   try {
   try {
     if (!isHoster(user.role)) {
     if (!isHoster(user.role)) {
+      console.log("不是房主");
       await joinRoomAction(roomId, userId, user, socket);
       await joinRoomAction(roomId, userId, user, socket);
     } else {
     } else {
       const hasRoom = await pubClient.hVals(roomId);
       const hasRoom = await pubClient.hVals(roomId);
       if (hasRoom.length === 0) {
       if (hasRoom.length === 0) {
         logger.debug("房主主动创建房间 :", { roomId, userId });
         logger.debug("房主主动创建房间 :", { roomId, userId });
         await buildRoom(roomId, userId, user);
         await buildRoom(roomId, userId, user);
+      } else {
+        logger.debug("房主已存在房间 :", { roomId, userId });
       }
       }
     }
     }
     user.isInRoom = true;
     user.isInRoom = true;
@@ -169,15 +173,14 @@ const startCallAction = async (roomId, userId, user, socket) => {
     logger.info("roomId", roomId);
     logger.info("roomId", roomId);
     logger.info("AllRoomUsers", AllRoomUsers.length);
     logger.info("AllRoomUsers", AllRoomUsers.length);
 
 
-    socket.broadcast.to(roomId).emit(EVENT.someOneInRoom, {
+    socket.emit(EVENT.roomIn, {
       user,
       user,
       roomsPerson: AllRoomUsers,
       roomsPerson: AllRoomUsers,
+      roomsConfig: roomConfig,
     });
     });
-
-    socket.emit(EVENT.roomIn, {
+    socket.broadcast.to(roomId).emit(EVENT.someOneInRoom, {
       user,
       user,
       roomsPerson: AllRoomUsers,
       roomsPerson: AllRoomUsers,
-      roomsConfig: roomConfig,
     });
     });
   } catch (error) {
   } catch (error) {
     // console.error("startCallAction:", error);
     // console.error("startCallAction:", error);

+ 12 - 8
src/controller/roomController.js

@@ -12,8 +12,6 @@ export async function roomController(socket) {
   let user = socket.handshake.query;
   let user = socket.handshake.query;
   const { roomId, userId, sceneNum, isClient, role, userLimitNum, sceneNumber, roomType, from, enableTalk } = user;
   const { roomId, userId, sceneNum, isClient, role, userLimitNum, sceneNumber, roomType, from, enableTalk } = user;
   if (user) {
   if (user) {
-    // const webRoomId = `${roomId}_${sceneNum}_web`;
-    // const clientRoom = `${userId}${roomId}`;
     const oneSceneNum = sceneNumber || sceneNum;
     const oneSceneNum = sceneNumber || sceneNum;
     const userUniqueId = `user-${userId}`;
     const userUniqueId = `user-${userId}`;
     const roomUniqueId = `room-${roomId}_${oneSceneNum}_web`;
     const roomUniqueId = `room-${roomId}_${oneSceneNum}_web`;
@@ -37,24 +35,23 @@ export async function roomController(socket) {
             enableTalk: enableTalk === "true" ? true : false,
             enableTalk: enableTalk === "true" ? true : false,
           });
           });
         }
         }
-        socket.join(roomUniqueId);
       }
       }
+      socket.join(roomUniqueId);
     } else {
     } else {
       logger.info("user-query-不存在 :", socket.handshake.query);
       logger.info("user-query-不存在 :", socket.handshake.query);
       // socket.disconnect();
       // socket.disconnect();
     }
     }
 
 
-    socket.on(EVENT.startCall, startCallAction.bind(null, roomUniqueId, userUniqueId, user, socket));
-    socket.on(EVENT.stopCall, stopCallAction.bind(null, roomUniqueId, userUniqueId, user, socket));
-
     socket.on(EVENT.action, (data) => {
     socket.on(EVENT.action, (data) => {
-      console.log("room-action", roomUniqueId, JSON.stringify(data));
+      console.log("room-action", roomUniqueId, socket.rooms, JSON.stringify(data));
       socket.broadcast.to(roomUniqueId).emit(EVENT.action, data);
       socket.broadcast.to(roomUniqueId).emit(EVENT.action, data);
+      // socket.broadcast.emit(EVENT.action, data);
     });
     });
 
 
     // 通知 baseView 减少大量通知
     // 通知 baseView 减少大量通知
     socket.on(EVENT.webSyncAction, (data) => {
     socket.on(EVENT.webSyncAction, (data) => {
-      if ([FROMTYPE.base].includes(Number(from))) {
+      // socket.broadcast.to(roomUniqueId).emit(EVENT.webSyncAction, data);
+      if ([FROMTYPE.base, FROMTYPE.Bridge].includes(Number(from))) {
         socket.broadcast.to(roomUniqueId).emit(EVENT.webSyncAction, data);
         socket.broadcast.to(roomUniqueId).emit(EVENT.webSyncAction, data);
       }
       }
     });
     });
@@ -89,6 +86,13 @@ export async function roomController(socket) {
       });
       });
     });
     });
 
 
+    socket.on(EVENT.startCall, () => {
+      startCallAction(roomUniqueId, userUniqueId, user, socket);
+    });
+    socket.on(EVENT.stopCall, () => {
+      stopCallAction(roomUniqueId, userUniqueId, user, socket);
+    });
+
     socket.on("disconnect", async (reason) => {
     socket.on("disconnect", async (reason) => {
       // leaveRoom({ clientRoom, userUniqueId, roomUniqueId, socket });
       // leaveRoom({ clientRoom, userUniqueId, roomUniqueId, socket });
       // watchRoomWithMaster(roomUniqueId, socket);
       // watchRoomWithMaster(roomUniqueId, socket);

+ 2 - 1
src/controller/syncActionController.js

@@ -26,7 +26,6 @@ export async function syncActionController(socket) {
     }
     }
     socket.on(EVENT.clientSyncAction, (data) => {
     socket.on(EVENT.clientSyncAction, (data) => {
       socket.broadcast.to(syncId).emit(EVENT.clientSyncAction, data);
       socket.broadcast.to(syncId).emit(EVENT.clientSyncAction, data);
-      // socket.broadcast.to(roomUniqueId).emit(EVENT.clientSyncAction, data);
     });
     });
 
 
     // 三体一端反传给房间
     // 三体一端反传给房间
@@ -45,7 +44,9 @@ export async function syncActionController(socket) {
       const isUpdate = await updateRoomUser(roomUniqueId, userUniqueId, updateUser);
       const isUpdate = await updateRoomUser(roomUniqueId, userUniqueId, updateUser);
       const AllRoomUsers = await getAllRoomUsers(roomUniqueId);
       const AllRoomUsers = await getAllRoomUsers(roomUniqueId);
       logger.info("changeVoiceStatus", { roomId: roomUniqueId, data, AllRoomUsers: AllRoomUsers.length });
       logger.info("changeVoiceStatus", { roomId: roomUniqueId, data, AllRoomUsers: AllRoomUsers.length });
+
       socket.broadcast.to(roomUniqueId).emit(EVENT.changeVoiceStatus, {
       socket.broadcast.to(roomUniqueId).emit(EVENT.changeVoiceStatus, {
+        user: user,
         roomsPerson: AllRoomUsers,
         roomsPerson: AllRoomUsers,
       });
       });
     });
     });

+ 0 - 44
src/controller/syncBaseViewController.js

@@ -1,44 +0,0 @@
-import { logger } from "../core/logger.js";
-import { pubClient } from "../connection/redis.js";
-import { ROLES, CODEMEG, EVENT, FROMTYPE } from "../enum/index.js";
-
-const joinSyncClient = async (syncId, userId, from, socket) => {
-  logger.debug("syncBaseView", { syncId, userId, from });
-  try {
-    await pubClient.hSet(syncId, from, userId);
-    socket.join(syncId);
-  } catch (error) {
-    logger.error("joinSyncClient", error);
-  }
-};
-
-export async function SyncBaseViewActionController(socket) {
-  let user = socket.handshake.query;
-  const { roomId, userId, sceneNum, isClient, role, userLimitNum, roomType, from } = user;
-
-  const syncId = `sync-baseView-${userId}`;
-  console.log("SyncBaseViewActionController", user && Number(from) === FROMTYPE.base);
-  if (user && Number(from) === FROMTYPE.base) {
-    console.log("SyncBaseViewActionController", syncId);
-    if ("roomId" in user && "userId" in user) {
-      joinSyncClient(syncId, userId, from, socket);
-    }
-    socket.on(EVENT.clientSyncAction, (data) => {
-      //console.log(data, 'clientSyncAction')
-      socket.broadcast.to(syncId).emit(EVENT.clientSyncAction, data);
-    });
-    socket.on(EVENT.action, (data) => {
-      //console.log(data, 'clientSyncAction')
-      socket.broadcast.to(syncId).emit(EVENT.action, data);
-    });
-    socket.on(EVENT.webSyncAction, (data) => {
-      // console.log("syncActionController-webSyncAction", data);
-      socket.broadcast.to(syncId).emit(EVENT.webSyncAction, data);
-    });
-
-    // socket.on(EVENT.changeVoiceStatus, (data) => {
-    //   socket.broadcast.to(syncId).emit(EVENT.changeVoiceStatus, data);
-    //   logger.info("changeVoiceStatus", { data, syncId });
-    // });
-  }
-}

+ 4 - 6
src/service/userService.js

@@ -23,13 +23,11 @@ const removeRoomUser = (roomId, useId) => {
 };
 };
 
 
 const getAllRoomUsers = async (roomId) => {
 const getAllRoomUsers = async (roomId) => {
-  try {
+  return new Promise(async (resolve) => {
     const AllRoomUsers = await pubClient.hVals(roomId);
     const AllRoomUsers = await pubClient.hVals(roomId);
-    const allUsers = AllRoomUsers.map((i) => JSON.parse(i));
-    return Promise.resolve(allUsers);
-  } catch (error) {
-    return Promise.resolve([]);
-  }
+    const allUsers = Array.from(AllRoomUsers).map((i) => JSON.parse(i));
+    return resolve(allUsers);
+  });
 };
 };
 
 
 export { updateUser, updateRoomUser, removeRoomAllUsers, removeRoomUser, getAllRoomUsers };
 export { updateUser, updateRoomUser, removeRoomAllUsers, removeRoomUser, getAllRoomUsers };