12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { BasicController } from "./basicController.js";
- import { RoomController } from "./room/index.js";
- import { SyncDeviceController } from "./syncDeviceController.js";
- import { FROMTYPE } from "../enum/index.js";
- import { updateRoomUser, isUserInRoom } from "../service/userService.js";
- export class ConnectController extends BasicController {
- constructor(...args) {
- super(...args);
- this.roomController = new RoomController(this.io, this.socket, this.redisCli);
- this.syncDeviceController = new SyncDeviceController(this.io, this.socket, this.redisCli, this.roomController);
- }
- async run() {
- await this.roomController.run();
- await this.syncDeviceController.run();
- this.redisSubClient.subscribe("dismissRoom", (message) => {
- this.logger("subscribe-订阅", JSON.stringify(message));
- });
- this.socket.on("disconnect", async (reason) => {
- const res = String(reason).split(" ");
- console.log("disconnect-reason", res);
- // if (res.includes("close") || res.includes("disconnect")) {
- if ([FROMTYPE.MiniAPP].includes(Number(this.roomController.user.from))) {
- const userId = this.roomController.userId;
- const from = this.roomController.user.from;
- const roomId = this.roomController.roomId;
- const role = this.roomController.user.role;
- const user = this.roomController.user;
- this.roomController.logger.info("断开连接", {
- userId,
- from,
- roomId,
- });
- // if (this.roomController.isHoster(role)) {
- this.roomController.roomAssistant.hasCall = false;
- setTimeout(async () => {
- // 有可客户端主动断开时
- if (Number(user.onlineStatus) === 1) {
- // const res = await this.roomController.roomAssistant.checkRoomMaximum(roomId);
- const isInRoom = await isUserInRoom(roomId, user.userId);
- if (!this.roomController.roomAssistant.roomMax && isInRoom) {
- console.log("已在线,被断开后", isInRoom);
- isInRoom.onlineStatus = 0;
- this.roomController.user = isInRoom;
- await updateRoomUser(roomId, userId, isInRoom);
- await this.roomController.roomAssistant.notifyUsersChange(roomId, user, false);
- }
- }
- }, 1000);
- // await updateRoomUser(this.roomController.user);
- // }
- // this.roomController.roomAssistant.setRoomAvailableBySeconds(this.roomController.sessionId, 3 * 60);
- // this.roomController.roomAssistant.disconnect();
- // this.roomController.roomAssistant.unWatchRoomExpired();
- // }
- }
- });
- }
- }
|