将套接字客户端与NestJs微服务一起使用

时间:2019-04-11 08:35:04

标签: javascript node.js sockets microservices nestjs

我最近开始与NestJs合作,并在尝试使用NestJs microservices测试我的TCP client应用程序时得到了库存

是否可以使用非嵌套应用触发@EventPattern@MessagePattern()

尝试此方法时,套接字客户端仅停留在trying to connect上。

有什么想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

您必须正确设置端口才能与nest一起使用:

您要发送的图案是

<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将被触发。

enter image description here

在您的main.ts中,设置嵌套服务器。那就是您要从Packet Sender发送到的端口(输入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进行响应。