在 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”。但这意味着客户端将收到所有其他组的所有消息(大量无用流量,可能是他们不应该访问的数据)