MQTT協議學習及實踐(Linux服務端,Android用戶端的例子)

來源:互聯網
上載者:User

標籤: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用戶端的例子)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.