mqtt.js排队的发布消息数不超过65535

时间:2018-07-11 06:04:01

标签: node.js mqtt iot

我一直在尝试使用https://www.npmjs.com/package/mqtt模拟大量发布,并发现该队列一次最多只能容纳65535条消息。 (如果我尝试发送更多邮件,其余的邮件将被丢弃)是否有此原因,并且有任何解决方法吗?

1 个答案:

答案 0 :(得分:0)

因为这是MQTT spec

中允许的最大数据包ID数

数据包ID是一个16位数字(最大65535),并且对于所有机上消息必须是唯一的。

  

SUBSCRIBE,UNSUBSCRIBE和PUBLISH(在QoS> 0的情况下)控制   包必须包含一个非零的16位包标识符   [MQTT-2.3.1-1]。客户端每次发送其中一个的新数据包   类型,必须为它分配当前未使用的数据包标识符   [MQTT-2.3.1-2]。如果客户端重新发送特定的控制数据包,则   它必须在随后的重发中使用相同的数据包标识符   包。数据包标识符在   客户端已处理了相应的确认数据包。在里面   QoS 1 PUBLISH的情况,这是对应的PUBACK;在这种情况下   QoS 2为PUBCOMP。对于SUBSCRIBE或UNSUBSCRIBE,它是   相应的SUBACK或UNSUBACK [MQTT-2.3.1-3]。相同条件   当服务器发送QoS> 0 [MQTT-2.3.1-4]的发布消息时,应用于服务器。