РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить