MQTT 中的内容类型替代方案

Content-Type alternative in MQTT

我正在使用 Paho 和 Mosqitto 进行 MQTT 通信。我们必须支持两种序列化模型 - xml 和 json。所以我正在寻找如何识别 MQTT 中的内容类型或有效负载类型。 MQTT 中是否有类似 HTTP Content-Type 的东西可以快速识别它?

内容类型:application/json

内容类型:application/xml

谢谢

不,MQTT 负载只是字节数组,headers 中没有 space(因为 MQTT 被设计为在网络上尽可能轻量)。其他任何事情都取决于应用程序在有效负载中实现。

您可以使用多个主题来显示差异。

例如foo/bar/xmlfoo/bar/json 并订阅 foo/bar/+ 这将匹配两者,然后根据主题切换。

或者只测试负载的第一个字符,'{' = json '<' = xml

2021 年回答

MQTT 5.0 引入了属性的概念。基本上,属性是可以添加到 MQTT 数据包的 UTF-8 字符串 key-value 对。新规范还定义了 payload-formatcontent-type 来传达有关负载中包含的 MIME 类型的信息。所以原则上,你可以在你的应用程序中使用这个 属性 就像你在 HTTP 中使用 Content-Type header.