gRPC-js + Angular ngx-grpc - Stream 在收到 4 条消息后停止接收消息

问题描述

我有一个使用名为 getUsers() 的 rpc 方法的 grpc-js 服务器设置。从客户端拨打电话时,尽管发送了 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

是否有任何明显的事情会导致这种情况?某种超时?任何人都可以给我一些关于我应该在哪里看的指示,因为我现在真的被困住了。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...