1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- 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) => {
- // chat:room:dismiss:c-fCTZyvc:E71464
- this.logger.info("subscribe-订阅", JSON.stringify(message));
- const disMissId = message.split("chat:room:dismiss:")[1];
- if (disMissId) {
- const disMissRoomId = `room:${disMissId}`;
- const userId = this.roomController.userId;
- const roomId = this.roomController.roomId;
- const user = this.roomController.user;
- const sessionId = this.roomController.sessionId;
- const roomConfigId = this.roomController.roomConfigId;
- this.logger.info("subscribe-订阅", disMissRoomId, userId, roomId, user);
- if (disMissRoomId === disMissRoomId) {
- this.roomController.roomAssistant.notifyRoomDismiss(roomId);
- this.roomController.roomAssistant.stopCall(roomId, userId, user);
- this.roomController.roomAssistant.destoryRoom(sessionId, roomConfigId);
- }
- }
- });
- this.socket.on("reconnect", () => {
- this.logger.info("重新连接");
- this.run();
- });
- 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();
- // }
- }
- });
- }
- }
|