欢迎来到我们的MQTT 5基础教程系列的第8部分。在第7部分,我们探讨了共享订阅。在本文中,我们将专注于Payload Format Indicators(负载格式指示器),它们指定消息内容类型,确保更轻松、更高效的解析和系统之间的互操作性。
什么是MQTT中的Payload Format Indicator?
Payload Format Indicator是任何包含负载的MQTT数据包的基本组成部分。这包括封装WILL消息或PUBLISH数据包的CONNECT数据包。这个可选的字节值有两种可能的设置:0表示“未指定的字节流”,而1表示“UTF-8编码的负载”。当没有提供Payload Format Indicator时,它会自动默认为0。
MQTT 内容类型
与Payload Format Indicator类似,Content Type也是可选的,并且可以包含在包含WILL消息或任何PUBLISH数据包的CONNECT数据包中。Content Type的值必须是一个UTF-8编码的字符串,用于标识负载的性质。当Payload Format Indicator设置为1时,理想情况下,您应该有一个MIME内容类型描述符(尽管这不是硬性要求)。只需一个有效的UTF-8字符串即可。
为什么需要描述负载格式?
Payload Format Indicator和Content Type的联合使用有助于透明地描述任何应用程序消息的负载内容。这种能力为创建和定义各种负载格式的行业标准奠定了基础。MQTT协议专家认为,这种标准化是协议的自然发展。
在标题中包含负载内容描述对于个体部署非常有益,它确保了每条消息都在不深入负载本身的情况下被正确处理。根据内容类型,系统内的不同消息可能需要不同的解析方法。此外,在某些情况下,消息的持久性可能取决于负载的具体类型。由于内容类型的定义取决于用户设计,这一功能的潜在应用似乎是无限的。
总结
Payload Format Indicator用于区分负载是未定义的字节数组还是UTF-8编码的消息。当处理UTF-8编码的消息时,发送方可以使用内容类型来指定负载的性质。
这些功能为大规模系统以及潜在的整个行业之间的透明负载内容定义奠定了基础。随着对实际负载进行预解析的需求减少,正确的消息处理可以显著提高可扩展性。
尽管预计大多数用户将依赖已知的MIME类型来描述内容,但他们也可以使用任意的UTF-8字符串。
您必须登录才能发表评论。