diff options
| author | anatawa12 <anatawa12@icloud.com> | 2024-07-18 20:04:23 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-18 20:04:23 +0900 |
| commit | 10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee (patch) | |
| tree | c098b60b4fee0030c4f6502c92035672f3fda44f /packages/backend/src/server/api/stream/channels/queue-stats.ts | |
| parent | fix(frontend): 子メニューの最大長調整が行われていない問... (diff) | |
| download | sharkey-10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee.tar.gz sharkey-10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee.tar.bz2 sharkey-10ce7bf3c45c3e09dc86f1b9c3a0d7e79c23f5ee.zip | |
kill any from streaming API Implementation (#14251)
* chore: add JsonValue type
* refactor: kill any from Connection.ts
* refactor: fix StreamEventEmitter contains undefined instead of null
* refactor: kill any from channels
* docs(changelog): Fix: Steaming APIが不正なデータを受けた場合の動作が不安定である問題
* fix license header
* fix lints
Diffstat (limited to 'packages/backend/src/server/api/stream/channels/queue-stats.ts')
| -rw-r--r-- | packages/backend/src/server/api/stream/channels/queue-stats.ts | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/packages/backend/src/server/api/stream/channels/queue-stats.ts b/packages/backend/src/server/api/stream/channels/queue-stats.ts index 061aa76904..ff7e740226 100644 --- a/packages/backend/src/server/api/stream/channels/queue-stats.ts +++ b/packages/backend/src/server/api/stream/channels/queue-stats.ts @@ -6,6 +6,7 @@ import Xev from 'xev'; import { Injectable } from '@nestjs/common'; import { bindThis } from '@/decorators.js'; +import type { JsonObject, JsonValue } from '@/misc/json-value.js'; import Channel, { type MiChannelService } from '../channel.js'; const ev = new Xev(); @@ -22,19 +23,22 @@ class QueueStatsChannel extends Channel { } @bindThis - public async init(params: any) { + public async init(params: JsonObject) { ev.addListener('queueStats', this.onStats); } @bindThis - private onStats(stats: any) { + private onStats(stats: JsonObject) { this.send('stats', stats); } @bindThis - public onMessage(type: string, body: any) { + public onMessage(type: string, body: JsonValue) { switch (type) { case 'requestLog': + if (typeof body !== 'object' || body === null || Array.isArray(body)) return; + if (typeof body.id !== 'string') return; + if (typeof body.length !== 'number') return; ev.once(`queueStatsLog:${body.id}`, statsLog => { this.send('statsLog', statsLog); }); |