connectController.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { BasicController } from "./basicController.js";
  2. import { RoomController } from "./room/index.js";
  3. import { SyncDeviceController } from "./syncDeviceController.js";
  4. import { FROMTYPE } from "../enum/index.js";
  5. import { updateRoomUser, isUserInRoom } from "../service/userService.js";
  6. export class ConnectController extends BasicController {
  7. constructor(...args) {
  8. super(...args);
  9. this.roomController = new RoomController(this.io, this.socket, this.redisCli);
  10. this.syncDeviceController = new SyncDeviceController(this.io, this.socket, this.redisCli, this.roomController);
  11. }
  12. async run() {
  13. await this.roomController.run();
  14. await this.syncDeviceController.run();
  15. this.redisSubClient.subscribe("dismissRoom", (message) => {
  16. this.logger("subscribe-订阅", JSON.stringify(message));
  17. });
  18. this.socket.on("disconnect", async (reason) => {
  19. const res = String(reason).split(" ");
  20. console.log("disconnect-reason", res);
  21. // if (res.includes("close") || res.includes("disconnect")) {
  22. if ([FROMTYPE.MiniAPP].includes(Number(this.roomController.user.from))) {
  23. const userId = this.roomController.userId;
  24. const from = this.roomController.user.from;
  25. const roomId = this.roomController.roomId;
  26. const role = this.roomController.user.role;
  27. const user = this.roomController.user;
  28. this.roomController.logger.info("断开连接", {
  29. userId,
  30. from,
  31. roomId,
  32. });
  33. // if (this.roomController.isHoster(role)) {
  34. this.roomController.roomAssistant.hasCall = false;
  35. setTimeout(async () => {
  36. // 有可客户端主动断开时
  37. if (Number(user.onlineStatus) === 1) {
  38. // const res = await this.roomController.roomAssistant.checkRoomMaximum(roomId);
  39. const isInRoom = await isUserInRoom(roomId, user.userId);
  40. if (!this.roomController.roomAssistant.roomMax && isInRoom) {
  41. console.log("已在线,被断开后", isInRoom);
  42. isInRoom.onlineStatus = 0;
  43. this.roomController.user = isInRoom;
  44. await updateRoomUser(roomId, userId, isInRoom);
  45. await this.roomController.roomAssistant.notifyUsersChange(roomId, user, false);
  46. }
  47. }
  48. }, 1000);
  49. // await updateRoomUser(this.roomController.user);
  50. // }
  51. // this.roomController.roomAssistant.setRoomAvailableBySeconds(this.roomController.sessionId, 3 * 60);
  52. // this.roomController.roomAssistant.disconnect();
  53. // this.roomController.roomAssistant.unWatchRoomExpired();
  54. // }
  55. }
  56. });
  57. }
  58. }