当MQTT通信中缺少子组时,会发生什么? 我目前使用的是PAH-MQTT C++库(但也应适用于MQTT库的其他口味,尤其是C),以异步实现MQTT客户端。在发送订阅后,MQTT服务器有时不响应子包,即使稍后的发布/发布包对成功

当MQTT通信中缺少子组时,会发生什么? 我目前使用的是PAH-MQTT C++库(但也应适用于MQTT库的其他口味,尤其是C),以异步实现MQTT客户端。在发送订阅后,MQTT服务器有时不响应子包,即使稍后的发布/发布包对成功,mqtt,paho,Mqtt,Paho,我目前对为什么子包丢失不感兴趣(我预计可能只是一个数据包丢失了…),但是在这种情况下,我应该从MQTT客户机库期望什么呢 我最初的期望是,在某个超时之后,会调用一个故障处理程序,但我不确定是否存在这样的超时,或者如果我不主动检查(例如,使用wait_for),它是否会在队列中永远挂起?规范(3.1.1)对此情况不是很清楚。在我看来,这是有缺陷的 经纪人必须以子组响应订阅。但是,允许它在发送子包之前发送发布包 订阅/取消订阅消息没有真正的QoS。此外,子分组不是会话数据的一部分。因此,重试与否完全

我目前对为什么子包丢失不感兴趣(我预计可能只是一个数据包丢失了…),但是在这种情况下,我应该从MQTT客户机库期望什么呢

我最初的期望是,在某个超时之后,会调用一个故障处理程序,但我不确定是否存在这样的超时,或者如果我不主动检查(例如,使用wait_for),它是否会在队列中永远挂起?

规范(3.1.1)对此情况不是很清楚。在我看来,这是有缺陷的

经纪人必须以子组响应订阅。但是,允许它在发送子包之前发送发布包

订阅/取消订阅消息没有真正的QoS。此外,子分组不是会话数据的一部分。因此,重试与否完全取决于代理的实现。

规范(3.1.1)对这种情况不是很清楚。在我看来,这是有缺陷的

经纪人必须以子组响应订阅。但是,允许它在发送子包之前发送发布包


订阅/取消订阅消息没有真正的QoS。此外,子分组不是会话数据的一部分。因此,重试与否完全取决于代理的实现。

根据MQTT规范版本3.1.1,当服务器从客户端接收到订阅数据包时,服务器必须使用子包进行响应

但是规范没有描述当没有子包时客户端应该做什么。所以这完全取决于你。(或您的客户)您的应用程序规范应该说明客户机在这种情况下的行为,这并不违反MQTT规范


在我看来,最好不要再进一步发送出版物。这将是一种故障安全。

根据MQTT规范版本3.1.1,当服务器从客户端接收到订阅数据包时,服务器必须使用子包进行响应

但是规范没有描述当没有子包时客户端应该做什么。所以这完全取决于你。(或您的客户)您的应用程序规范应该说明客户机在这种情况下的行为,这并不违反MQTT规范

在我看来,最好不要再进一步发送出版物。这将是一种故障安全