我有這個問題,在測試程序中,我正在開發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