要确定带宽使用情况,我需要知道从设备发送到服务器的 MQTT 消息的确切大小。
此消息如下所示:
client.publish(topic="foo", payload="Hello World!");
我想知道整个消息的大小,因为它是使用 TLS 通过 Internet 加密传输到 MQTT 代理的。
要确定带宽使用情况,我需要知道从设备发送到服务器的 MQTT 消息的确切大小。
此消息如下所示:
client.publish(topic="foo", payload="Hello World!");
我想知道整个消息的大小,因为它是使用 TLS 通过 Internet 加密传输到 MQTT 代理的。
这在某种程度上取决于您的意思是 MQTT v3 还是 MQTT v5(规范的新版本,它可以有更多可选的标头)。
我将根据最小 v3 进行回答,因为这将给出默认的最小大小,并且在不使用任何附加功能时仍然对 MQTT 5 iirc 有效(它可能有一个额外的标志字节)。
首先,MQTT 数据包由 4 部分组成(只有第 1 和 2 部分用于所有数据包类型,但对于发布,您需要全部 4 部分)
foo另外 5 个字节的主题(长度为 2 个字节,主题为 3 个字节)Hello World!它是 12 个字节(UTF-8 编码时)所以这应该加起来1 + 1 + 5 + 2 + 12 = 21 bytes(或负载顶部的 9 个字节的开销)
更多细节在这里:https : //docs.solace.com/MQTT-311-Prtl-Conformance-Spec/MQTT%20Control%20Packets.htm#_Toc430864901
如果您真的指的是 MQTT-SN,那么您应该能够从规范中解决它(http://www.mqtt.org/new/wp-content/uploads/2009/06/MQTT-SN_spec_v1.2.pdf)但它可以更少,因为您可以预先配置主题,只需按编号引用它们,这样标题就会变得更小。