我有这个问题,在测试程序中,我正在开发MQTT客户端,我订阅了一个主题,之后,我等待“发布“消息从服务器到我的客户端。MQTT从发布和mqtt ping recv C
一个好的recv(发布消息)或recv超时后,我发送一个mqtt PINGREQ到服务器。
A PINGREQ后,我要等待PINGRESP,然后我打电话给recv,就像我在等待PUBLISH消息一样。
如果流程是这样的:
Client -> PINGREQ
Server -> PUBLISH
Server -> PINGRESP
不是服务器发布消息丢失了。如何解决这个问题?我在QOS 0上使用MQTT,在这个QOS级别解决这个问题是合理的,或者在QOS1上检查这种情况很明智吗?
谢谢,我正在转移到非阻塞呼叫。通过这种方式,我的客户可以接收PINGREQ,并且有一个PUBLISH传入,对吗?这是好处吗? – andrea 2013-04-10 20:42:09
我现在正在测试发布所有数据到达后,在接收期间没有发现更多数据,服务器似乎关闭连接。似乎在从服务器发布到客户端时,计时器未被重置。 – andrea 2013-04-11 11:22:20
非阻塞呼叫具有显着的优势,即您在呼叫recv()后不必等待传入数据到达。 – ralight 2013-04-11 14:08:54