玩轉MQTT-阿里雲之MQTT使用(下)

玩轉MQTT-阿里雲之MQTT使用(下)php

摘要

       爲使物聯網項目在正式使用時,能順利切換到具備高併發高負載能力的服務平臺,對阿里雲提供的MQTT服務進行使用驗證。html

引言

       以前寫「MQTT之阿里雲使用-玩轉阿里雲」這篇文章時,因爲時間關係(寫文章也是要花費大量時間的),打算將內容拆分爲兩部分,將寫好的一部分先發了出去,打算稍後再補充後續完結內容。算法

       不成想,文章發出後,竟然被管理員從首頁移除,嚴重打擊了本人本來不那麼強悍的心裏,致使一直不太有興趣完成後續部分。編程

      近來翻看本身的文章,發表這篇爛尾的文章竟然是本身文章中閱讀訪問量最高的一篇。雖然文章內容組織比較凌亂,表述也不夠好,在這9102年即將過去之際,仍是打算來一個續篇,爲本身忙忙碌碌(碌碌無爲)的2019作個收尾。json

MQTT服務驗證

       書接上回,咱們說到了阿里雲RocketMQ、MQTT服務的開通(MQTT消息的持久化依託MQ服務)、介紹了MQ、MQTT實例的建立,頂級Topic資源的建立,GroupID前綴的建立以及RAM賬號資源的建立及賬號受權。數組

       一系列準備工做以後,準備開始使用MQTT消息中間件服務。安全

訪問鑑權

       使用微消息隊列 MQTT 的客戶端收發消息時,服務端會根據 MQTT 客戶端設置的 Username 和 Password 參數來進行鑑權。服務器

       阿里雲支持兩種鑑權模式併發

       簽名驗證:永久受權,適用於客戶端安全受信任的場景app

       臨時 Token 權限驗證:臨時受權,適用於客戶端不安全的場景

 

       具體鑑權認證的相關資料在這裏,你們可自行訪問閱讀。https://help.aliyun.com/document_detail/54225.html

 

簽名校驗

      簡單介紹一下阿里雲MQTT訪問中的簽名鑑權模式下的訪問要點

      一、 MQTT鏈接參數中ClientId必須以GroupID爲前綴,以@@@做爲鏈接符,鏈接自定義的客戶ID

      二、 MQTT鏈接參數中Username由鑑權模式名稱、AccessKey、InstanceId 三部分組成,以 「|」 分隔。

      三、 MQTT鏈接參數中Password是用AccessKey對應的AccessKeySecret對ClientId使用 HMAC-SHA1 方法進行簽名計算獲得一個二進制數組,再對該二進制數組作 Base64 編碼獲得最終的 Password 簽名字符串。

 

      簽名校驗資料網址以下:https://help.aliyun.com/document_detail/48271.html

 

      阿里雲MQTT服務管理頁面中,提供了一個在線的JS版本的簽名校驗驗證計算頁面,用於驗證各位自行實現的校驗算法是否正確。

 

 

MQTT鏈接測試

讓咱們調出Paho神器,來一場說連就連的測試

https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho.ui.app/1.0.2/

https://www.eclipse.org/paho/downloads.php

 

 

      如上圖,先建立MQTT鏈接,填入服務器地址及端口,填入客戶機標識(ClientId)

 

 

      在MQTT鏈接選項中,勾選開啓登陸,填寫用戶名、密碼

 

 

 

      點擊鏈接,正常狀況下,便可成功鏈接並登陸到阿里雲MQTT服務器。

      筆者基於C#,使用開源MQTTnet的Nuget包,也實現了一個簡單的MQTT客戶端。咱們用這個客戶端進行鏈接測試,效果以下圖。

 

消息消費

      MQTT是基於二進制消息的發佈/訂閱編程模式的消息協議。

      要使用MQTT進行通信,就須要有發佈者和消費者。發佈者經過發佈主題消息傳遞信息,接收者經過訂閱對應的主題接收和消費信息。

訂閱主題

 

      MQTT客戶端與MQTT服務器創建鏈接以後,咱們便可以進行消息訂閱和消息發佈。

發佈主題

      咱們使用上文中創建的頂級主題建立一個帶有通配符的訂閱主題。

      注意,MQTT容許使用通配符訂閱主題,可是並不容許使用通配符廣播。

 

 

 

       咱們建立一個頂級主題下帶有城市和發佈者編號的主題,發佈一條消息,Payload中攜帶一個json格式的狀態信息和座標信息。

       點擊發布,能夠看到上圖中,接收框中,成功接收到訂閱主題下的消息。(操做中發佈了二條消息)。

 

       使用Paho測試消息發佈/訂閱,效果相同。

 

       一個發佈者發佈的消息,能夠被多個訂閱者接收。

       至此,阿里雲MQTT服務使用介紹完畢。

 

      <<<玩轉MQTT-阿里雲之MQTT使用(上)

相關文章
相關標籤/搜索