当前位置: 首页 > 知识库问答 >
问题:

节点gRPC:无错误地将元数据从服务器发送到客户端

郁灿
2023-03-14

在客户端,很容易为服务器添加元数据:

const meta = new grpc.Metadata();
meta.add('xyz', 'okay');

stub.service.Rpc(request, meta, (err, response) => {
});

以上内容可以在服务器上访问,如下所示:

call.metadata.get('xyz');

现在,如果我们需要将元数据从服务器发送到客户端,我们会这样做:

const err = { code, details };
const meta = new grpc.Metadata();
meta.add('...', '...');

callback(err, null, meta);

请注意,我们正在传递错误,实际响应为null。

如何传递错误和非空响应以及元数据?

如果我执行以下操作,它似乎不起作用,因为没有错误就无法访问客户端上的元数据。

callback(null, r, meta);
// `r` is some response message

gRPC规范是否明确禁止在没有错误时从服务器向客户端发送元数据?

此外,在我们讨论这个问题时,我希望有人解释一下如何将跟踪元数据和初始元数据从服务器发送到节点中的客户端。

相关链接:

>

  • https://github.com/grpc/grpc-node

    我可以从服务器向客户端GRPC发送自定义错误消息吗?

    如何向nodejs grpc调用添加元数据

    https://github.com/grpc/grpc/issues/9053

    https://medium.com/compli-engineering/grpc-nodejs-using-jwt-authentication-b048fef6ecb2

  • 共有2个答案

    吕衡
    2023-03-14

    看起来您可以使用以下代码:

    client.someFunction().on('metadata', (meta) => { /* any code */ })
    

    至少在v0.9上。x您可以看到:https://github.com/grpc/grpc-node/blob/v1.9.x/packages/grpc-native-core/src/client.js#L562

    齐阎宝
    2023-03-14

    ServerUnaryCall。sendMetadata(responseMetadata)

    服务器:

    const method = (call, cb) => {
      // code
      call.sendMetadata(metadata)
      // code
    }
    

    客户:

    const call = client.method(params, cb)
    call.on('metadata', (metadata) => {
      // code
    })
    
     类似资料:
    • 我对gRpc很陌生,已经开始探索它们的基础知识(在C语言中)。我想获得有关如何发送心跳以检查客户端/服务器是否仍处于连接状态以及在断开连接时采取恢复措施的指导。任何示例或参考任何文档/文章都将有助于我开始学习。谢谢

    • 我正在创建我的产品,并与这个问题。有一天,我设置了Socket.io,一切都很好。第二天,我将服务器和客户端从http迁移到HTTPS。迁移后客户端和服务器端仍然连接,但不能从客户端发射到服务器,从服务器发射到客户端。 我的ssl证书位于和中,它们加载正确。运行在上的服务器 我的示例react组件。我的react应用程序运行在上。HTTPS连接良好,工作良好。 我该怎么办?也许我在中错误地使用了s

    • 我有一个关于Java插座的技术问题。 例如,假设我有一个Java Sockets服务器和n个多个客户端。是否可以几乎实时地将数据从服务器发送到任何或所有客户端? 更准确地说: 有哪种监听器可以在Sockets客户端中实现 有人能告诉我什么方法是最好的吗?此外,如果有人有一个代码示例,我也会很高兴。 谢谢

    • 我正在Unity中制作一个游戏,我试图将数据从客户端发送到服务器并返回到客户端(试图保存实例),但当我收到数据并尝试将数据发送回客户端时,它表示udp客户端未连接。 它成功地将数据从我的Unity客户端发送到服务器,但一旦它到达那里,套接字就会断开连接,我就无法返回任何内容。正如你所看到的,我试图设置一些多播选项,但它似乎不能正常工作。 客户: 服务器: 因此,服务器中UdpClient的实例会保

    • 我有一个TCP服务器和一个客户端,简单的TCP服务器将接收传入的数据并打印出来,而客户端将继续创建一个套接字连接并循环发送数据到TCP服务器。 我得到的信息是,如果一个TCP连接被正确地关闭了,这个过程应该会继续下去,不会发生任何崩溃。 但在从客户端接收到一定数量的数据到服务器之后,客户端会崩溃,并出现错误 有没有什么办法可以避免这次撞车,让它持续运行呢?我是新来的所以如果我犯了什么愚蠢的错误,我

    • 我一直在做这个项目,其中一个部分包括从Raspberry向我的服务器发送一些数据。但它不能正常工作,我不知道为什么。我试图通过删除“urllib2”并使用“request”来修复错误。但徒劳的是,一切都没有改变。如果有人能帮助我,我会非常感激的。谢谢! PHP代码: python代码: