РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsSpSoRm 148 of 201 menu
◀ ▶

Комната в Nest

Все подключённые видят каждое изменение, хотя часть людей смотрит только свой раздел. Общая рассылка шумит лишними сигналами там, где нужен узкий круг получателей.

Комната в Socket.IO - именованная группа сокетов на сервере. Клиент просит войти в комнату, и дальше шлюз шлёт события только через выбор этой группы, не трогая остальных участников канала.

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

import { ConnectedSocket, MessageBody, SubscribeMessage, WebSocketGateway, WebSocketServer, } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; import { PostService } from './post.service.js'; @WebSocketGateway() export class PostGateway { @WebSocketServer() server: Server; postService: PostService; constructor(postService: PostService) { this.postService = postService; } @SubscribeMessage('joinFeed') handleJoinFeed( @MessageBody() room: string, @ConnectedSocket() client: Socket, ) { client.join(room); } @SubscribeMessage('createPost') handleCreatePost( @MessageBody() body: { title: string; room: string }, ) { const post = this.postService.add(body.title); this.server.to(body.room).emit('postAdded', post); } }

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

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