From cfaea6ec7ce5b276411f656fcd48df3ab77c17e7 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Mon, 10 Feb 2025 13:59:25 +0100 Subject: [PATCH] WS improvements --- package-lock.json | 39 +++++++++++++++++++++++++++++++++++++ package.json | 2 ++ src/managers/dateManager.ts | 11 +++++------ 3 files changed, 46 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index cd1703b..45b6127 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@mikro-orm/reflection": "^6.4.2", "@types/ioredis": "^4.28.10", "bcryptjs": "^2.4.3", + "bufferutil": "^4.0.9", "bullmq": "^5.13.2", "cors": "^2.8.5", "dotenv": "^16.4.5", @@ -27,6 +28,7 @@ "socket.io": "^4.7.5", "ts-node": "^10.9.2", "typescript": "^5.5.3", + "utf-8-validate": "^6.0.5", "zod": "^3.23.8" }, "devDependencies": { @@ -2378,6 +2380,19 @@ "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", "license": "BSD-3-Clause" }, + "node_modules/bufferutil": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/bullmq": { "version": "5.40.2", "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.40.2.tgz", @@ -5435,6 +5450,17 @@ "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", "license": "MIT" }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, "node_modules/node-gyp-build-optional-packages": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz", @@ -7260,6 +7286,19 @@ "punycode": "^2.1.0" } }, + "node_modules/utf-8-validate": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-6.0.5.tgz", + "integrity": "sha512-EYZR+OpIXp9Y1eG1iueg8KRsY8TuT8VNgnanZ0uA3STqhHQTLwbl+WX76/9X5OY12yQubymBpaBSmMPkSTQcKA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/package.json b/package.json index 836fbf8..6c36471 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "@mikro-orm/reflection": "^6.4.2", "@types/ioredis": "^4.28.10", "bcryptjs": "^2.4.3", + "bufferutil": "^4.0.9", "bullmq": "^5.13.2", "cors": "^2.8.5", "dotenv": "^16.4.5", @@ -45,6 +46,7 @@ "socket.io": "^4.7.5", "ts-node": "^10.9.2", "typescript": "^5.5.3", + "utf-8-validate": "^6.0.5", "zod": "^3.23.8" }, "devDependencies": { diff --git a/src/managers/dateManager.ts b/src/managers/dateManager.ts index 3ae82b7..a4c229b 100644 --- a/src/managers/dateManager.ts +++ b/src/managers/dateManager.ts @@ -8,16 +8,14 @@ import WorldRepository from '#repositories/worldRepository' class DateManager { private static readonly CONFIG = { GAME_SPEED: 8, // 24 game hours / 3 real hours - UPDATE_INTERVAL: 1000 // 1 second + UPDATE_INTERVAL: 1000, // 1 minute } as const - private io: Server | null = null - private intervalId: NodeJS.Timeout | null = null - private currentDate = new Date() private readonly logger = Logger.type(LoggerType.APP) + private currentDate = new Date() + private intervalId: NodeJS.Timeout | null = null public async boot(): Promise { - this.io = SocketManager.getIO() await this.loadDate() this.startDateLoop() this.logger.info('Date manager loaded') @@ -85,7 +83,8 @@ class DateManager { } private emitDate(): void { - this.io?.emit('date', this.currentDate) + const io = SocketManager.getIO() + io?.emit('date', this.currentDate) } private async saveDate(): Promise {