connectController.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. console.log(message); // 'message'
  17. this.roomController.logger("subscribe-订阅", JSON.stringify(message));
  18. });
  19. this.socket.on("disconnect", async (reason) => {
  20. const res = String(reason).split(" ");
  21. console.log("disconnect-reason", res);
  22. // if (res.includes("close") || res.includes("disconnect")) {
  23. if ([FROMTYPE.MiniAPP].includes(Number(this.roomController.user.from))) {
  24. const userId = this.roomController.userId;
  25. const from = this.roomController.user.from;
  26. const roomId = this.roomController.roomId;
  27. const role = this.roomController.user.role;
  28. const user = this.roomController.user;
  29. this.roomController.logger.info("断开连接", {
  30. userId,
  31. from,
  32. roomId,
  33. });
  34. // if (this.roomController.isHoster(role)) {
  35. this.roomController.roomAssistant.hasCall = false;
  36. setTimeout(async () => {
  37. // 有可客户端主动断开时
  38. if (Number(user.onlineStatus) === 1) {
  39. // const res = await this.roomController.roomAssistant.checkRoomMaximum(roomId);
  40. const isInRoom = await isUserInRoom(roomId, user.userId);
  41. if (!this.roomController.roomAssistant.roomMax && isInRoom) {
  42. console.log("已在线,被断开后", isInRoom);
  43. isInRoom.onlineStatus = 0;
  44. this.roomController.user = isInRoom;
  45. await updateRoomUser(roomId, userId, isInRoom);
  46. await this.roomController.roomAssistant.notifyUsersChange(roomId, user, false);
  47. }
  48. }
  49. }, 1000);
  50. // await updateRoomUser(this.roomController.user);
  51. // }
  52. // this.roomController.roomAssistant.setRoomAvailableBySeconds(this.roomController.sessionId, 3 * 60);
  53. // this.roomController.roomAssistant.disconnect();
  54. // this.roomController.roomAssistant.unWatchRoomExpired();
  55. // }
  56. }
  57. });
  58. }
  59. }