MQTT 中的内容类型替代方案

问题描述 投票:0回答:2

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

内容类型:application/json

内容类型:应用程序/xml

谢谢

mqtt mosquitto paho
2个回答
4
投票

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

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

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

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


4
投票

2021 年答案

MQTT 5.0 引入了属性的概念。基本上,属性是 UTF-8 字符串键值对,您可以将其添加到 MQTT 数据包中。新规范还定义了

payload-format
content-type
来传达有关负载中包含的 MIME 类型的信息。因此原则上,您可以在应用程序中使用此属性,就像在 HTTP 中使用
Content-Type
标头一样。

来源

有效负载格式:https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111 内容类型:https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901118

© www.soinside.com 2019 - 2024. All rights reserved.