2020-05-04 MQTT服務(wù)器和訂閱發(fā)布客戶端測(cè)試

MQTT服務(wù)端和客戶端測(cè)試結(jié)果

1.服務(wù)端啟動(dòng):


服務(wù)啟動(dòng).jpg

2.訂閱客戶端啟動(dòng):
訂閱客戶端發(fā)送請(qǐng)求步驟:
2.1首先向服務(wù)端發(fā)送連接請(qǐng)求
2.2服務(wù)端回復(fù)連接成功ack
2.3客戶端收到連接成功ack,客戶端發(fā)送心跳【PingReqMessage】
2.4服務(wù)回送心跳應(yīng)答【PingRespMessage】
2.5客戶端收到心跳應(yīng)答后,訂閱話題【mqttClient/topicTwo2、mqttClient/topicTwo3、mqttClient/topicTwo4】,三者Qos=1,目前沒法設(shè)置成其他
2.6服務(wù)端回復(fù)訂閱成功ack【SubAckMessage】
看訂閱客戶端啟動(dòng)日志:


image.png

看服務(wù)端日志:服務(wù)端對(duì)這三個(gè)訂閱請(qǐng)求都回復(fù)了ack
image.png

3.發(fā)布客戶端啟動(dòng):
發(fā)布客戶端發(fā)送請(qǐng)求步驟:
3.1首先向服務(wù)端發(fā)送連接請(qǐng)求
3.2服務(wù)端回復(fù)連接成功ack
3.3客戶端收到連接成功ack,客戶端發(fā)送心跳【PingReqMessage】
3.4服務(wù)回送心跳應(yīng)答【PingRespMessage】
3.5客戶端收到心跳應(yīng)答后,發(fā)布話題如下;


image.png

發(fā)布客戶端的日志:
image.png

數(shù)了一下,話題發(fā)布全部成功,這里mqttClient/topicTwo4話題發(fā)布了5次【為了驗(yàn)證多次發(fā)送同一個(gè)話題能否成功】
驗(yàn)證訂閱客戶端是否收到5個(gè)mqttClient/topicTwo4話題
image.png

上圖結(jié)果顯示正確,測(cè)試到這里就結(jié)束了。
4.服務(wù)端保持客戶端的心跳:【55秒】
image.png

5.服務(wù)端保持客戶端心跳機(jī)制:
5.1客戶端與服務(wù)端連接成功后,服務(wù)端會(huì)建立一個(gè)該客戶端延時(shí)任務(wù),放入延時(shí)隊(duì)列,延時(shí)時(shí)間為該客戶的存活時(shí)間【ConnectMessage的KeepAlive參數(shù)】,放入延時(shí)隊(duì)列每5秒取任務(wù),如果有任務(wù)被獲取,并且該任務(wù)沒有被取消,服務(wù)端主動(dòng)斷開客戶端連接。
5.2 服務(wù)端一旦接收到已經(jīng)建立連接的客戶端的數(shù)據(jù),會(huì)把該客戶端之前的心跳任務(wù)取消,重新提交一個(gè)延時(shí)任務(wù)。
本例子中客戶端30s會(huì)發(fā)送一個(gè)Ping消息給服務(wù)端,所以客戶端永遠(yuǎn)不會(huì)斷開【除非異?!?

以上是簡(jiǎn)單的例子,僅用于自己學(xué)習(xí)記錄,其中還有很多問題和不完善的地方,不喜勿碰,非常感謝。
獻(xiàn)上需要外部導(dǎo)入的jar包:
鏈接:https://pan.baidu.com/s/1GNaoruCvnG_egP69TEXCOA
提取碼:mxfm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容