【问题标题】:View Actual Byte Stream Sent by NodeJS GRPC Libraries查看 NodeJS GRPC 库发送的实际字节流
【发布时间】:2020-02-04 17:58:33
【问题描述】:

在 NodeJS 中使用 grpc@grpc/grpc-js 客户端时,有没有办法记录或查看发送到服务器的实际字节流?

我正在使用一个不透明的 GRPC 服务器,它在我流式传输字节时接受我的字节,但没有做它应该做的事情。我想查看发送到服务器的实际字节,因为我们怀疑 GRPC 库如何序列化 64 位整数存在问题。

本机grpc 模块的GRPC_VERBOSITY=debug GRPC_TRACE=tcp,http,api,http2_stream_state env 变量在这种特定情况下没有帮助——它们显示一个字节流的一部分,而不是完整的字节流。

即使是“代码中发生序列化的地方”也会很有用。

【问题讨论】:

  • 在本机模块中,api 应该足以查看所有序列化和反序列化消息。您正在寻找哪些您没有从中获得的信息?
  • @murgatroid99 感谢您的回复——但我不确定“api”在这种情况下是什么意思。
  • 对不起,我打错了。我的意思是api 跟踪器:您在GRPC_TRACE 列表中拥有的第三个东西。
  • 好的,这很有用@murgatroid99——我们查看了那个输出,它似乎没有打印完整的字节流,只是一个截断的版本。我们认为这是由于日志记录的限制。也许我们看到的问题是以截断方式序列化的事情
  • 其实我觉得我错了。看起来并没有输出实际的消息数据。

标签: node.js serialization grpc


【解决方案1】:

GRPC_VERBOSITY 的设置是正确的。如果您使用 TLS,您可以看到使用GRPC_TRACE=secure_endpoint 发送和接收的所有数据。如果您使用的是纯文本连接,则可以改为使用GRPC_TRACE=tcp 来查看它。在这两种情况下,您都需要从 HTTP/2 框架中选择您要查找的数据,并且它可能会显示压缩消息,这基本上是无法解释的。

或者,如果您的设置允许,您可能想尝试 Wireshark。它应该能够为您处理 HTTP/2 帧,并且我相信它具有专门处理 gRPC 流量的插件。

【讨论】:

    猜你喜欢
    • 2014-05-02
    • 1970-01-01
    • 2015-08-19
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2013-04-26
    • 1970-01-01
    相关资源
    最近更新 更多