【发布时间】:2012-08-07 18:59:38
【问题描述】:
我正在使用 MQTT 开发 M2M 应用程序(在 C# 中,虽然我看不出这有什么关系)。我已经向代理发布了一条消息,QoS 为 1,RETAIN 位为 ON。当我随后订阅该主题时(订阅为 0 的 QoS),我收到一条 PUBLISH 消息,并且标题显示它的 QoS 为 0。
我遇到的问题是主题的可变标头包含消息 ID,但我无法以编程方式知道它的存在。规范似乎表明 MessageID 仅应在设置 QoS 或 1 或 2 时出现,但传入数据包的字节 0 显然是 0x31(消息类型为 PUBLISH,QoS of 0,@ 987654328@ = 1)。
现在我的解决方法是反序列化数据,如果出现异常,我会向前跳转两个字节并重试。这行得通,但对我来说确实感觉很笨拙。
这是预期的行为吗?我正在使用的经纪人有问题吗?对我的规范有一些误解?
【问题讨论】:
标签: mqtt