我最近开始使用 NestJs,并在尝试测试我的 NestJs microservices 时获得了库存。应用程序使用 TCP client
是否可以使用非 Nest 应用触发 @EventPattern 或 @MessagePattern()?
尝试此方法时,套接字客户端只是停留在尝试连接上。
有什么想法吗?
谢谢。
请您参考如下方法:
2020 年 2 月更新
自 Nest v6.6.0 起,将外部服务与消息反/序列化器集成变得更加容易。
看看对应的PR .
原始答案
您必须正确设置端 Eloquent 能将其与嵌套一起使用:
您要发送的模式是
<json-length>#{"pattern": <pattern-name>, "data": <your-data>[, "id": <message-id>]}
示例:
76#{"pattern":"sum","data":[0,3,3],"id":"ce51ebd3-32b1-4ae6-b7ef-e018126c4cc4"}
参数id用于@MessagePattern,没有它@EventPattern将被触发。
在您的 main.ts 中,您设置了 Nest 服务器。这是您想要从数据包发送器发送到的端口(在 1 处输入)。
const app = await NestFactory.createMicroservice(AppModule, {
transport: Transport.TCP,
options: { host: 'localhost', port: 3005 },
// ^^^^^^^^^^
});
然后你希望你的嵌套@Client监听来自Packet Sender的消息(参见图像中的位置2)
@Client({
transport: Transport.TCP,
options: { host: 'localhost', port: 52079 },
// ^^^^^^^^^^^
})
private client: ClientTCP;
然后连接您的客户端:
async onModuleInit() {
await this.client.connect();
}
并定义一个@MessagePattern:
@MessagePattern('sum')
sum(data: number[]): number {
console.log(data);
return data.reduce((a, b) => a + b, 0);
}
如您所见,在示例中,我发送了 [0,3,3],并且 Nest 正确响应了总和 6。






