【问题标题】:mqtt.js does not queue more than 65535 publish messagesmqtt.js 不排队超过 65535 条发布消息
【发布时间】:2018-07-11 06:04:00
【问题描述】:

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

【问题讨论】:

    标签: node.js mqtt iot


    【解决方案1】:

    因为这是 MQTT spec 中允许的最大数据包 ID 数

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

    订阅、取消订阅和发布(在 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] 的 PUBLISH 时适用于服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-14
      • 2015-12-08
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 2014-02-02
      相关资源
      最近更新 更多