mqtt訂閱成功卻收不到消息 mqtt斷開之后需要重新訂閱嗎?
mqtt斷開之后需要重新訂閱嗎?在發(fā)送connect消息之前,服務器應該根據(jù)客戶端“connect flag”中的“clean session flag”將值設(shè)置為0。在客戶端斷開連接后,服務器必須繼
mqtt斷開之后需要重新訂閱嗎?
在發(fā)送connect消息之前,服務器應該根據(jù)客戶端“connect flag”中的“clean session flag”將值設(shè)置為0。在客戶端斷開連接后,服務器必須繼續(xù)存儲/維護客戶端的訂閱狀態(tài)。這些狀態(tài)包括:存儲訂閱消息、qos1和qos2消息,以及在消息發(fā)送過程中由于連接丟失而發(fā)送失敗的消息,以便在客戶端重新連接時可以重新發(fā)送上述消息。如果值為1,服務器需要立即清除連接狀態(tài)數(shù)據(jù)。在接收到客戶端發(fā)送的斷開連接消息后,服務器需要主動關(guān)閉TCP/IP連接。
服務器端如何向客戶端推送信息?
使用mqtt協(xié)議實現(xiàn)Android推送功能是一個解決方案。Mqtt是一種輕量級的消息發(fā)布/訂閱協(xié)議,是實現(xiàn)基于移動客戶端的消息推送服務器的理想方案。共同解決方案實施原則:
1。輪詢(pull)模式:客戶端定期向服務器發(fā)送查詢消息,一旦服務器發(fā)生變化,立即同步消息。
2. 短信(推送)模式:通過截取短信并分析短信內(nèi)容來理解服務器的命令,但這種模式在經(jīng)濟上普通用戶難以承受。
3. 推送模式:在客戶端和服務器之間建立一個長期的連接,這樣消息就可以及時、實時地發(fā)送。注:1。為了支持第三方推送內(nèi)容,客戶端和服務器都應該支持它??蛻舳撕头掌鞫紤搶雙ush-SDK。2服務器推送內(nèi)容,可以準確指定推送時間,推送具體接收者、用戶組、位置。三。也就是說,推的維度可以決定時間、地點和人群。
4. Aurora使用兩種不同的通知方法,一種是推送通知,另一種是推送消息。
5. 如果要使用Android PN,需要做大量的工作,需要了解XMPP協(xié)議,了解Android PN的實現(xiàn)機制,需要調(diào)試內(nèi)部bug。