我正在使用 Paho 和 Mosqitto 进行 MQTT 通信。我们必须支持两种序列化模型 - xml 和 json。所以我正在寻找如何识别 MQTT 中的内容类型或有效负载类型。 MQTT中是否有类似HTTP Content-Type的东西可以快速识别?
内容类型:application/json
内容类型:应用程序/xml
谢谢
不,MQTT 有效负载只是字节数组,标头中没有空格(因为 MQTT 被设计为在网络上尽可能轻量)。其他任何事情都取决于应用程序在有效负载中实现。
您可以使用多个主题来显示差异。
例如foo/bar/xml 或 foo/bar/json 并订阅 foo/bar/+ ,这将匹配两者,然后根据主题进行切换。
或者只测试有效负载的第一个字符,'{' = json '<' = xml
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