我如何知道在使用 Protocol Buffers 库时收到了啥消息?

Posted

技术标签:

【中文标题】我如何知道在使用 Protocol Buffers 库时收到了啥消息?【英文标题】:How can I know what message I've received while using Protocol Buffers library?我如何知道在使用 Protocol Buffers 库时收到了什么消息? 【发布时间】:2010-11-09 16:26:12 【问题描述】:

我似乎不太了解 Protocol Buffers,但这对我和我的实际用例来说都是非常重要的问题。

在阅读有关协议缓冲区的文档时,我不明白如何知道应该从流中解码哪条消息?关于某些已定义消息的所有示例,但如果您定义了几个完全不同的消息并且您希望在 2 个进程之间发送这些消息 - 您如何知道您刚刚收到了哪条消息?

或者,Protocol Buffers 可能不会尝试解决这个问题,而是将这个问题留给另一个抽象级别?

或者我应该将消息打包成这样的结构:

message wrapper 
   required string message_name = 1;
   string packed_message = 2; 

然后我应该分两个阶段解码消息:首先获取message_name,然后在第二阶段解码真正的打包消息,不是吗?

【问题讨论】:

【参考方案1】:

看self describing messages section

【讨论】:

以上是关于我如何知道在使用 Protocol Buffers 库时收到了啥消息?的主要内容,如果未能解决你的问题,请参考以下文章

Protocol Buffers 是不是支持移动构造函数

Protocol buffers--python 实践 protocol buffers vs json

如何在 PHP 中处理 Protocol Buffers 数据

如何在 PHP 中处理 Protocol Buffers 数据

如何在PHP中处理Protocol Buffers数据

Dart-RPC:使用 Protocol Buffers 序列化而不是 JSON