diff --git a/src/metrics.gateway.ts b/src/metrics.gateway.ts index e2d7002..6916b80 100644 --- a/src/metrics.gateway.ts +++ b/src/metrics.gateway.ts @@ -84,6 +84,15 @@ export class MetricsGateway implements OnGatewayInit, OnGatewayConnection, OnGat } } + @SubscribeMessage('subscribe-metric') + async handleSubscribeMetric(client: Socket, payload: { metric: string, interval?: number }) { + const stopUpdates = await this.sendPeriodicUpdates(payload.metric, payload.interval); + + // Сохраняем функцию остановки для этого клиента + client.on('disconnect', () => stopUpdates()); + client.on('unsubscribe-metric', () => stopUpdates()); + } + // Метод для периодической отправки обновлений async sendPeriodicUpdates(metric: string, interval: number = 5000) { const timer = setInterval(async () => {