0

在 NestJs 后端,我想添加一些功能 websocket 功能。

我已经在 NestJs 中找到了一些关于 websocket 的教程(例如https://gabrieltanner.org/blog/nestjs-realtime-chat),并且我了解其中的要点。

但我想要“群组”或集线器,或者....我想要这样的 websocket 功能:当有人加入群组时广播,向该群组的成员广播消息,......

但我不明白我怎么会有这样的行为。

这是网关定义的示例之一:

import {
 SubscribeMessage,
 WebSocketGateway,
 OnGatewayInit,
 WebSocketServer,
 OnGatewayConnection,
 OnGatewayDisconnect,
} from '@nestjs/websockets';
import { Logger } from '@nestjs/common';
import { Socket, Server } from 'socket.io';

@WebSocketGateway()
export class AppGateway implements OnGatewayInit, OnGatewayConnection, OnGatewayDisconnect {

 @WebSocketServer() server: Server;
 private logger: Logger = new Logger('AppGateway');

 @SubscribeMessage('msgToServer')
 handleMessage(client: Socket, payload: string): void {
  this.server.emit('msgToClient', payload);
 }

 afterInit(server: Server) {
  this.logger.log('Init');
 }

 handleDisconnect(client: Socket) {
  this.logger.log(`Client disconnected: ${client.id}`);
 }

 handleConnection(client: Socket, ...args: any[]) {
  this.logger.log(`Client connected: ${client.id}`);
 }
}

我需要什么相同但仅适用于给定组的人(假设它是用 URL 中的 ID 标识的)。

只是一个精度:我知道我可以在每条消息中添加这个组的“Id”。但这意味着客户端将收到所有其他组的所有消息(大量无用流量,可能是他们不应该访问的数据)

4

0 回答 0