我有一个 grpc-js 服务器设置,带有一个名为 getUsers() 的 rpc 方法。从客户端拨打电话时,尽管发送了 6 条消息,但我只收到了 4 条回复。
这是客户端方法:
const client = new UsersClient(environment.rpcHost);
const params = new CMSQuery();
client.getUsers(params).on('data', (message: User) => {
const obj = message.toObject();
console.log(`${obj.name} received`);
this.users.push(obj);
}).on('end', () => {
console.log('End of request');
});
这是服务器方法:
async getUsers(call: grpc.ServerWritableStream<CMSQuery, User>): Promise<any> {
const params = call.request.toObject();
this.collection.find({}).forEach(user => {
const message = protoFromObject(User, user);
call.write(message);
console.log(`${user.name} sent`);
}).finally(() => {
console.log('Closing request');
call.end();
});
}
服务器具有以下控制台输出:
User1 sent
User2 sent
User3 sent
User4 sent
User5 sent
User6 sent
Closing Request
然而客户端只有以下控制台输出:
User1 received
User2 received
User3 received
User4 received
End of request
有什么明显的事情会导致这种情况吗?某种超时?谁能给我一些关于我应该在哪里寻找的指示,因为我现在真的被困住了。
谢谢