Рассылка в Nest
Один клиент добавил строку в память, а остальные вкладки об этом не узнали. Подтверждение только отправителю не обновляет экраны у тех, кто уже держит канал открытым.
Поле с WebSocketServer
даёт доступ к общему серверу
Socket.IO. Через него шлюз может
разослать сигнал каждому активному
соединению, а не одному клиенту.
Так список на всех экранах
может обновиться сразу после
записи в массиве сервиса.
Покажем на примере постов:
import {
MessageBody,
SubscribeMessage,
WebSocketGateway,
WebSocketServer,
} from '@nestjs/websockets';
import { Server } 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('createPost')
handleCreatePost(@MessageBody() body: { title: string }) {
this.postService.add(body.title);
this.server.emit('postsChanged', {
count: this.postService.posts.length,
});
}
}
Добавьте в WorkerGateway
рассылку числа записей в памяти
всем подключённым клиентам
после каждого нового имени
работника.