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/xml 或 foo/bar/json 并订阅 foo/bar/+ 这将匹配两者,然后根据主题切换。
或者只测试负载的第一个字符,'{' = json '<' = xml
2021 年回答
MQTT 5.0 引入了属性的概念。基本上,属性是可以添加到 MQTT 数据包的 UTF-8 字符串 key-value 对。新规范还定义了 payload-format
和 content-type
来传达有关负载中包含的 MIME 类型的信息。所以原则上,你可以在你的应用程序中使用这个 属性 就像你在 HTTP 中使用 Content-Type
header.
我正在使用 Paho 和 Mosqitto 进行 MQTT 通信。我们必须支持两种序列化模型 - xml 和 json。所以我正在寻找如何识别 MQTT 中的内容类型或有效负载类型。 MQTT 中是否有类似 HTTP Content-Type 的东西可以快速识别它?
内容类型:application/json
内容类型:application/xml
谢谢
不,MQTT 负载只是字节数组,headers 中没有 space(因为 MQTT 被设计为在网络上尽可能轻量)。其他任何事情都取决于应用程序在有效负载中实现。
您可以使用多个主题来显示差异。
例如foo/bar/xml 或 foo/bar/json 并订阅 foo/bar/+ 这将匹配两者,然后根据主题切换。
或者只测试负载的第一个字符,'{' = json '<' = xml
2021 年回答
MQTT 5.0 引入了属性的概念。基本上,属性是可以添加到 MQTT 数据包的 UTF-8 字符串 key-value 对。新规范还定义了 payload-format
和 content-type
来传达有关负载中包含的 MIME 类型的信息。所以原则上,你可以在你的应用程序中使用这个 属性 就像你在 HTTP 中使用 Content-Type
header.