diff options
| author | riku6460 <17585784+riku6460@users.noreply.github.com> | 2023-07-04 07:49:13 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-04 07:49:13 +0900 |
| commit | 61e7eb8ff1d7ef222e60b687090cca53a182efc3 (patch) | |
| tree | 01ef60171f5546ebb372a8c7683c02e45fd734ab /packages/backend/src/server | |
| parent | Merge branch 'develop' of https://github.com/misskey-dev/misskey into develop (diff) | |
| download | sharkey-61e7eb8ff1d7ef222e60b687090cca53a182efc3.tar.gz sharkey-61e7eb8ff1d7ef222e60b687090cca53a182efc3.tar.bz2 sharkey-61e7eb8ff1d7ef222e60b687090cca53a182efc3.zip | |
perf(backend): JSON.parse の呼び出しを削減する (#11091)
* perf(backend): JSON.parse の呼び出しを削減する
Co-authored-by: Hidekazu Kobayashi <kobahide789@gmail.com>
* Update CHANGELOG.md
---------
Co-authored-by: Hidekazu Kobayashi <kobahide789@gmail.com>
Diffstat (limited to 'packages/backend/src/server')
| -rw-r--r-- | packages/backend/src/server/api/StreamingApiServerService.ts | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/packages/backend/src/server/api/StreamingApiServerService.ts b/packages/backend/src/server/api/StreamingApiServerService.ts index 4a0342d2b4..e4291becf0 100644 --- a/packages/backend/src/server/api/StreamingApiServerService.ts +++ b/packages/backend/src/server/api/StreamingApiServerService.ts @@ -103,6 +103,13 @@ export class StreamingApiServerService { }); }); + const globalEv = new EventEmitter(); + + this.redisForSub.on('message', (_: string, data: string) => { + const parsed = JSON.parse(data); + globalEv.emit('message', parsed); + }); + this.#wss.on('connection', async (connection: WebSocket.WebSocket, request: http.IncomingMessage, ctx: { stream: MainStreamConnection, user: LocalUser | null; @@ -112,12 +119,11 @@ export class StreamingApiServerService { const ev = new EventEmitter(); - async function onRedisMessage(_: string, data: string): Promise<void> { - const parsed = JSON.parse(data); - ev.emit(parsed.channel, parsed.message); + function onRedisMessage(data: any): void { + ev.emit(data.channel, data.message); } - this.redisForSub.on('message', onRedisMessage); + globalEv.on('message', onRedisMessage); await stream.listen(ev, connection); @@ -137,7 +143,7 @@ export class StreamingApiServerService { connection.once('close', () => { ev.removeAllListeners(); stream.dispose(); - this.redisForSub.off('message', onRedisMessage); + globalEv.off('message', onRedisMessage); this.#connections.delete(connection); if (userUpdateIntervalId) clearInterval(userUpdateIntervalId); }); |