|
@@ -4,6 +4,7 @@ import { io } from "../core/io.js";
|
|
|
import { logger } from "../core/logger.js";
|
|
|
import { updateUser, removeRoomAllUsers } from "../service/userService.js";
|
|
|
import { watchRoomService } from "../service/watchRoomService.js";
|
|
|
+import { getSig } from "../core/getSig.js";
|
|
|
|
|
|
/**
|
|
|
* 检查是否是房主
|
|
@@ -116,15 +117,19 @@ const closeRoomAction = async (roomId, userId, user, socket) => {
|
|
|
};
|
|
|
export async function roomController(socket) {
|
|
|
let user = socket.handshake.query;
|
|
|
- const { roomId, userId, sceneNum, isClient, role, userLimitNum, roomType, from } = user;
|
|
|
+ const { roomId, userId, sceneNum, isClient, role, userLimitNum, sceneNumber, roomType, from } = user;
|
|
|
if (user) {
|
|
|
// const webRoomId = `${roomId}_${sceneNum}_web`;
|
|
|
// const clientRoom = `${userId}${roomId}`;
|
|
|
+ const oneSceneNum = sceneNumber || sceneNum;
|
|
|
const userUniqueId = `user-${userId}`;
|
|
|
- const roomUniqueId = `room-${roomId}_${sceneNum}_web`;
|
|
|
+ const roomUniqueId = `room-${roomId}_${oneSceneNum}_web`;
|
|
|
// const userLimitNum = userLimitNum || process.env.US
|
|
|
if ("roomId" in user && "userId" in user) {
|
|
|
- const userObj = { ...user, isConnected: true };
|
|
|
+ console.log("getSig", getSig(userId));
|
|
|
+ user.sig = getSig(userId);
|
|
|
+ const userObj = { ...user, isConnected: true, roomType: roomType || "" };
|
|
|
+
|
|
|
updateUser(userUniqueId, userObj);
|
|
|
// await pubClient.hSet(userUniqueId, user);
|
|
|
// await pubClient.expire(userUniqueId, 60 * 60 * 24);
|
|
@@ -143,12 +148,19 @@ export async function roomController(socket) {
|
|
|
|
|
|
socket.on(EVENT.startCall, startCallAction.bind(null, roomUniqueId, userUniqueId, user, socket));
|
|
|
socket.on(EVENT.stopCall, stopCallAction.bind(null, roomUniqueId, userUniqueId, user, socket));
|
|
|
-
|
|
|
+ socket.onAny((event) => {
|
|
|
+ console.log(`got ${event}`);
|
|
|
+ });
|
|
|
socket.on("disconnect", (reason) => {
|
|
|
// leaveRoom({ clientRoom, userUniqueId, roomUniqueId, socket });
|
|
|
// watchRoomWithMaster(roomUniqueId, socket);
|
|
|
console.log("reason", reason);
|
|
|
- disconnectAction(roomUniqueId, userUniqueId, socket, user);
|
|
|
+ if (reason === "transport close") {
|
|
|
+ // 主动离开
|
|
|
+ } else {
|
|
|
+ // 被动离开
|
|
|
+ disconnectAction(roomUniqueId, userUniqueId, socket, user);
|
|
|
+ }
|
|
|
});
|
|
|
socket.on("reconnect", () => {
|
|
|
console.log("reconnect");
|
|
@@ -162,6 +174,7 @@ const disconnectAction = async (roomId, userId, socket, user) => {
|
|
|
};
|
|
|
|
|
|
const startCallAction = async (roomId, userId, user, socket) => {
|
|
|
+ console.log("startCallAction");
|
|
|
if (!isHoster(user.role)) {
|
|
|
joinRoomAction(roomId, userId, user, socket);
|
|
|
} else {
|
|
@@ -171,6 +184,16 @@ const startCallAction = async (roomId, userId, user, socket) => {
|
|
|
buildRoom(roomId, userId, user);
|
|
|
}
|
|
|
}
|
|
|
+ user.isInRoom = true;
|
|
|
+ socket.broadcast.to(roomId).emit(EVENT.someOneInRoom, {
|
|
|
+ user,
|
|
|
+ roomsPerson: [user],
|
|
|
+ });
|
|
|
+ socket.emit(EVENT.roomIn, {
|
|
|
+ user,
|
|
|
+ roomsPerson: [user],
|
|
|
+ roomsConfig: {},
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
const stopCallAction = (roomId, userId, user, socket) => {
|