標籤:ack 重要 push 簡單的 環境 否則 介面 工程 ima
前言
MQTT(Message Queuing Telemetry Transport),是一個物聯網傳輸協議,它被設計用於輕量級的發布/訂閱式訊息傳輸,旨在為低頻寬和不穩定的網路環境中的物聯網裝置提供可靠的網路服務。MQTT是專門針對物聯網開發的輕量級傳輸協議。MQTT協議針對低頻寬網路,低計算能力的裝置,做了特殊的最佳化,使得其能適應各種物聯網應用情境。本文旨在研究其在訊息發布/訂閱/接收情境下的應用.
MQTT協議中的幾個重要概念
服務端
是發送訊息的用戶端和提取訂閱的用戶端之間的中介,又稱為broker.它接收來自用戶端的網路連接;接收用戶端發布的訊息;處理用戶端的訂閱和取消訂閱請求;轉寄相應訊息給合格已訂閱用戶端.
用戶端
訂閱相關的訊息;發布訊息給其它相關的用戶端
訂閱
訂閱包含一個主題過濾器和一個最大的服務品質(QoS)等級.用戶端只有訂閱了相關主題時,才能接收到對應主題的訊息
mosquitto編譯安裝及使用
mosquitto是一款實現了MQTT協議v3.1版的開源訊息代理軟體,https://mosquitto.org/download/,使用的是目前最新的版本1.4.10
tar xvf mosquitto-1.4.10.tar.gzcd mosquitto-1.4.10vi config.mk(將WITH_SRV:=yes中的yes改為no,否則會報ares.h檔案找不到的錯誤)makesudo make install
如果不做全域安裝的話,需要將lib/libmosquitto.so.1動態庫拷貝到/usr/lib/下,然後執行,否則會報動態庫無法使用的錯誤.
安裝完畢後,我們來類比下整個資訊推送的過程.
我們用3個Terminal分別表示broker,訂閱者和發行者.
Terminal A啟動mosquitto broker服務,它可以監聽到所有的互動過程
mosquitto
Terminal B開啟訂閱服務,之後所有關於該訂閱主題的訊息,它都能接收到
mosquitto_sub -v -t shopping
參數-v顯示詳細資料,-t表示主題
Terminal C發布訊息
mosquitto_pub -t shopping -m "What a nice day! Go shopping with me?"
參數-t表示主題,-m表示具體訊息的內容
mtqq_mosquittoMQTT Androd用戶端
利用MQTT3的java實現代碼,做了簡單的android用戶端
mtqq_mosquitto
主介面上放了4個按鈕,分別對應串連,訂閱,發布和中斷連線4個操作.在操作之前,必須先啟動MQTT服務,我這伺服器的ip地址是10.10.10.48,然後在android端按下CONNECT按鈕,可以看到logcat的串連成功的列印資訊,接著再按下SUBSCRIBE的按鈕完成主題為shopping的訂閱(作為demo,我這裡寫死了).為了接收到android端發布的資訊,我在伺服器端開啟了一個終端,同樣訂閱了shopping為主題的訊息.一切準備工作就緒後,按下android端的PUBLISH,完成之後,就可以在訂閱的終端看到shopping What a nice day! Go shopping with me?的主題訊息.
mtqq_mosquitto
mtqq_mosquitto
android端除了可以發送訊息,當然也可以接收.開啟另一個終端,發布一條主題為shopping的訊息
mosquitto_pub -t shopping -m "Sorry,I have no time."
可以看到android中的logcat,顯示已經接收到了相應的訊息.
mtqq_mosquitto
mtqq_mosquittoAndroid工程下載
https://github.com/djstava/MqttClientAndroid
參考文獻
1 https://mosquitto.org/documentation/
2 http://tokudu.com/post/50024574938/how-to-implement-push-notifications-for-android
3 http://blog.csdn.net/xukai871105/article/details/39252653
4 http://mqtt.org/
5 https://github.com/LichFaker/MqttClientAndroid
djstava
連結:http://www.jianshu.com/p/a7de93895416
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 http://www.jianshu.com/p/a7de93895416
MQTT協議學習及實踐(Linux服務端,Android用戶端的例子)