Вести с Полей
Канал с советами по современной ИИ разработке. Вступайте!
⊗jsnsSpSoDc 150 of 201 menu
◀ ▶

Отключение клиента в Nest

Вкладку закрыли, но сервер продолжает считать клиента активным. Без реакции на разрыв канала цифры онлайн и служебные заметки перестают совпадать с реальностью.

Интерфейс OnGatewayDisconnect добавляет метод, который срабатывает, когда сокет отвалился. Там же можно уменьшить счётчик, убрать запись из памяти или сообщить остальным через общий сервер сокетов о том, что участник ушёл.

Покажем на примере постов:

import { OnGatewayConnection, OnGatewayDisconnect, WebSocketGateway, WebSocketServer, } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; @WebSocketGateway() export class PostGateway implements OnGatewayConnection, OnGatewayDisconnect { @WebSocketServer() server: Server; connectedCount = 0; handleConnection() { this.connectedCount += 1; } handleDisconnect(client: Socket) { this.connectedCount -= 1; this.server.emit('viewerLeft', { online: this.connectedCount, socketId: client.id, }); } }

Допишите WorkerGateway: при разрыве соединения уменьшайте счётчик клиентов и сообщайте всем оставшимся новое число активных подключений.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить