【发布时间】:2012-12-26 07:20:09
【问题描述】:
我正在尝试设置一个 MQTT 服务器,它将客户端发送的消息保存到本地数据库中。每条消息都有一个“成功接收”标志,当接收客户端为收到的每条消息(QOS = 1)返回一个 puback 时,我想翻转它。
问题是:
当我发布消息时,服务器会正确接收来自接收客户端的 puback。但是,messageId 与发布客户端数据包中的不同。我知道这是故意的。但随后我将无法在 DB 中找到正确的消息来翻转标志。如果客户端 A 背靠背向客户端 B 发送 2 条 QOS = 1 的消息怎么办?服务器如何区分返回的 2 个 puback?
也许 MQTT 客户端正在做一些神奇的事情来映射我缺少的 messageId?
我正在使用 mqttjs 和 paho mqttv3 btw。
【问题讨论】:
-
找出问题所在。显然,您需要专门为您从 MQTT 服务器发布的消息分配一个 messageId。如果你不这样做,将使用一个随机数,并且 puback 中的 messageId 发送回服务器,packet.messageId,将是不同的。在专门给了一个消息id之后,来自puback的messageId和我发布时指定的一样。这是故意的吗????
标签: mqtt