首页 > 解决方案 > 如何使用nestjs向单个客户端广播消息?

问题描述

我正在使用nestjs websockets 为多供应商应用程序构建聊天应用程序,但是每当我从服务器向客户端广播/发送消息时,它都会被广播给所有客户端。是否可以向单个客户端发送消息?以及如何做到这一点?

export class ChatGateway implements OnGatewayInit {
    constructor(private conversationService: ConversationService) {}
    @WebSocketServer()
    server: Server;

    @SubscribeMessage('sendMessage')
    async handleMessage(
        client: Socket,
        payload: {
            senderProfileId: ID;
            recieverProfileId: ID;
            conversationId: ID;
            message: string;
            createdAt: Date;
        },
    ) {
        await this.conversationService.createMessage({
            message: payload.message,
            createdAt: payload.createdAt,
            senderProfileId: payload.senderProfileId as string,
            conversationId: payload.conversationId as string,
        });
        // Want to emit this to a single client
        this.server.emit('recieveMessage', payload);
    }
}

目前,我正在使用recieverProfileId来确保消息是否显示给正确的接收者。

标签: websocketchatnestjs

解决方案


推荐阅读