Browse Source

update save

gemercheung 3 năm trước cách đây
mục cha
commit
f6399638aa

+ 1 - 6
demo/client1.html

@@ -3,12 +3,7 @@
     <meta charset="UTF-8" />
     <title>socket.io客户端</title>
     <!-- <script src="./js/socket.io.js"></script> -->
-    <script
-      src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.min.js"
-      integrity="sha512-iqRVtNB+t9O+epcgUTIPF+nklypcR23H1yR1NFM9kffn6/iBhZ9bTB6oKLaGMv8JE9UgjcwfBFg/eHC/VMws+g=="
-      crossorigin="anonymous"
-      referrerpolicy="no-referrer"
-    ></script>
+    <script src="./socket.io.min.js"></script>
   </head>
 
   <body>

+ 53 - 0
demo/client2.html

@@ -0,0 +1,53 @@
+<html>
+  <head>
+    <meta charset="UTF-8" />
+    <title>socket.io客户端</title>
+    <!-- <script src="./js/socket.io.js"></script> -->
+    <script src="./socket.io.min.js"></script>
+  </head>
+
+  <body>
+    <iframe src="./index2.html"></iframe>
+
+    <button id="changeVoiceStatusOpen">开MIC</button>
+    <button id="changeVoiceStatusClose">关MIC</button>
+    <!-- <button id="stopCall">stopCall结束</button> -->
+    </div>
+
+    <script>
+      localStorage.debug = "socket.io-client:socket";
+      // 'http://47.115.43.159:3000'
+      // var socket = io("http://0.0.0.0:3000");
+      // const { roomId, userId, sceneNum, isClient, role, userLimitNum, roomType } = user
+      var socket = io("http://0.0.0.0:3000", {
+        path: "/test",
+        query: {
+          userId: "user_002",
+          sceneNum: "t-GusppsiKEC",
+          role: "AGENT",
+          from: 1,
+          roomType: "1v1",
+          nickName: "测试2",
+          roomId: "001",
+          myHeadUrl: "http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg",
+        },
+      });
+    
+      socket.on("connect", function (data) {
+        console.log(data);
+      });
+
+      var changeVoiceStatusOpen = document.querySelector("#changeVoiceStatusOpen");
+      changeVoiceStatusOpen.addEventListener("click", function () {
+        socket.emit("changeVoiceStatus",{status:true});
+      });
+      var changeVoiceStatusClose = document.querySelector("#changeVoiceStatusClose");
+      changeVoiceStatusClose.addEventListener("click", function () {
+        socket.emit("changeVoiceStatus",{status:false});
+      });
+
+    
+      
+    </script>
+  </body>
+</html>

+ 1 - 6
demo/index.html

@@ -3,12 +3,7 @@
     <meta charset="UTF-8" />
     <title>socket.io客户端</title>
     <!-- <script src="./js/socket.io.js"></script> -->
-    <script
-      src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.min.js"
-      integrity="sha512-iqRVtNB+t9O+epcgUTIPF+nklypcR23H1yR1NFM9kffn6/iBhZ9bTB6oKLaGMv8JE9UgjcwfBFg/eHC/VMws+g=="
-      crossorigin="anonymous"
-      referrerpolicy="no-referrer"
-    ></script>
+    <script src="./socket.io.min.js"></script>
   </head>
 
   <body>

+ 2 - 7
demo/index2.html

@@ -3,12 +3,7 @@
     <meta charset="UTF-8" />
     <title>socket.io客户端</title>
     <!-- <script src="./js/socket.io.js"></script> -->
-    <script
-      src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.min.js"
-      integrity="sha512-iqRVtNB+t9O+epcgUTIPF+nklypcR23H1yR1NFM9kffn6/iBhZ9bTB6oKLaGMv8JE9UgjcwfBFg/eHC/VMws+g=="
-      crossorigin="anonymous"
-      referrerpolicy="no-referrer"
-    ></script>
+    <script src="./socket.io.min.js"></script>
   </head>
 
   <body>
@@ -29,7 +24,7 @@
           role: "AGENT",
           from: 0,
           roomType: "1v1",
-          nickName: "测试1",
+          nickName: "测试2",
           roomId: "001",
           myHeadUrl: "http://downza.img.zz314.com/edu/pc/wlgj-1008/2016-06-23/64ec0888b15773e3ba5b5f744b9df16c.jpg",
         },

+ 1 - 6
demo/index3.html

@@ -3,12 +3,7 @@
     <meta charset="UTF-8" />
     <title>socket.io客户端</title>
     <!-- <script src="./js/socket.io.js"></script> -->
-    <script
-      src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.min.js"
-      integrity="sha512-iqRVtNB+t9O+epcgUTIPF+nklypcR23H1yR1NFM9kffn6/iBhZ9bTB6oKLaGMv8JE9UgjcwfBFg/eHC/VMws+g=="
-      crossorigin="anonymous"
-      referrerpolicy="no-referrer"
-    ></script>
+    <script src="./socket.io.min.js"></script>
   </head>
 
   <body>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 7 - 0
demo/socket.io.min.js


+ 13 - 5
src/controller/roomController.js

@@ -2,7 +2,8 @@ import { pubClient } from "../connection/redis.js";
 import { ROLES, CODEMEG, EVENT, FROMTYPE } from "../enum/index.js";
 import { io } from "../core/io.js";
 import { logger } from "../core/logger.js";
-// import { removeRoomAllUsers } from "../service/userService.js";
+import { updateUser, removeRoomAllUsers } from "../service/userService.js";
+import { watchRoomService } from "../service/watchRoomService.js";
 
 /**
  * 检查是否是房主
@@ -110,7 +111,7 @@ const leaveRoomAction = async (roomId, userId, user, socket) => {
 const closeRoomAction = async (roomId, userId, user, socket) => {
   logger.info("房主关闭房间", userId);
   socket.leave(roomId);
-  removeRoomAllUsers(roomId);
+  await removeRoomAllUsers(roomId);
   socket.broadcast.emit(EVENT.roomClose, { code: 3002, msg: CODEMEG[3002] });
 };
 export async function roomController(socket) {
@@ -123,9 +124,10 @@ export async function roomController(socket) {
     const roomUniqueId = `room-${webRoomId}`;
     // const userLimitNum = userLimitNum || process.env.US
     if ("roomId" in user && "userId" in user) {
-      user.isLogin = true;
-      await pubClient.hSet(userUniqueId, user);
-      await pubClient.expire(userUniqueId, 60 * 60 * 24);
+      const userObj = { ...user, isConnected: true };
+      updateUser(userUniqueId, userObj);
+      // await pubClient.hSet(userUniqueId, user);
+      // await pubClient.expire(userUniqueId, 60 * 60 * 24);
       // 房主自动创建房间
 
       if (isHoster(role) && Number(from) === FROMTYPE.MiniAPP) {
@@ -146,12 +148,18 @@ export async function roomController(socket) {
       // leaveRoom({ clientRoom, userUniqueId, roomUniqueId, socket });
       // watchRoomWithMaster(roomUniqueId, socket);
       console.log("reason", reason);
+      disconnectAction(roomUniqueId, userUniqueId, socket, user);
     });
     socket.on("reconnect", () => {
       console.log("reconnect");
     });
   }
 }
+const disconnectAction = async (roomId, userId, socket, user) => {
+  const userObj = { ...user, isConnected: false };
+  updateUser(userId, userObj);
+  watchRoomService(roomId, userId, socket);
+};
 
 const startCallAction = async (roomId, userId, user, socket) => {
   if (!isHoster(user.role)) {

+ 12 - 16
src/service/userService.js

@@ -1,25 +1,21 @@
 import { pubClient } from "../connection/redis.js";
 
-const addUser = async (userId, user) => {
-  const user = pubClient.hVals(userId);
-  if (user.length === 0) {
-    await pubClient.hSet(userId, JSON.stringify(user));
-  }
-};
+const updateUser = async (userId, userObj) => {
+  //   const user = await pubClient.exists(userId);
+  //   if (user === 1) {
+  //     await pubClient.hSet(userId, userObj);
+  //   }
 
-const updateUser = async (userId, user) => {
-  const user = pubClient.hVals(userId);
-  if (user.length > 0) {
-    await pubClient.hSet(userId, JSON.stringify(user));
-  }
+  await pubClient.hSet(userId, userObj.from, JSON.stringify(userObj));
+  await pubClient.expire(userId, 60 * 60 * 24);
 };
 
-const removeRoomAllUsers = async (roomId) => {
-  await pubClient.del(roomId);
+const removeRoomAllUsers = (roomId) => {
+  return pubClient.del(roomId);
 };
 
-const removeRoomUser = async (roomId, useId) => {
-  await pubClient.hDel(roomId, useId);
+const removeRoomUser = (roomId, useId) => {
+  return pubClient.hDel(roomId, useId);
 };
 
-export { addUser, updateUser, removeRoomAllUsers, removeRoomUser };
+export { updateUser, removeRoomAllUsers, removeRoomUser };

+ 23 - 5
src/service/watchRoomService.js

@@ -1,8 +1,26 @@
+import { pubClient } from "../connection/redis.js";
+import { logger } from "../core/logger.js";
+import { io } from "../core/io.js";
+import { FROMTYPE } from "../enum/index.js";
 
-const passiveLeave(){
+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秒离开");
+        }
+      }
+    }
+  }, 10000);
+};
 
-
-    // setTimeout
+export async function watchRoomService(roomId, userId, socket) {
+  passiveLeave(roomId, userId, socket);
 }
-
-export async function watchRoomService(roomId, socket) {}