MQTT協議基於PUB/SUB的非同步通訊模式,不適用於服務端控制裝置端並同步擷取返回結果的情境。物聯網平台基於MQTT協議給使用者服務端提供了RRPC介面,實現使用者服務端下發RRPC訊息資料並同步等待裝置響應資料。
名詞解釋
名詞 | 說明 |
RRPC | 是Revert-RPC的簡稱。RPC(Remote Procedure Call)是指採用客戶機/伺服器模式,您不需要瞭解底層技術協議,即可遠程請求服務。RRPC則可以實現由服務端請求裝置端,並能夠使裝置端響應的功能。 |
RRPC訂閱Topic | 裝置端訂閱RRPC訊息時傳遞的Topic,含有萬用字元。 |
RRPC請求訊息 | 物聯網平台下發給裝置端的訊息。 |
RRPC響應訊息 | 裝置端回複給物聯網平台的訊息。 |
RRPC訊息ID | 物聯網平台為每次RRPC調用,產生的唯一訊息ID,可標識不同RRPC訊息。 |
RRPC原理
具體流程如下:
(可選)裝置端訂閱RRPC相關Topic。
物聯網平台根據MQTT協議,僅定製了RRPC訊息的請求和響應機制。裝置端若要擷取物聯網平台下發的RRPC訊息資料,並做應對處理,需要在裝置端先訂閱Topic,然後開發資料處理邏輯。
裝置可通過發送SUB指令訂閱指定Topic,實現從物聯網平台擷取訊息。開發方法,請參見Link SDK中訂閱Topic的程式碼範例。
在裝置端開發處理RRPC訊息資料的方法,請參見RRPC功能開發樣本。
使用者服務器調用物聯網平台的RRpc介面。
物聯網平台收到伺服器端RRPC調用請求,向裝置下發一條RRPC請求訊息。訊息體為使用者傳入的資料,Topic為物聯網平台定義的Topic,且攜帶RRPC訊息ID。
裝置收到下行訊息後,按照指定Topic格式(包含之前物聯網平台下發的唯一RRPC訊息ID),回複一條RRPC響應訊息給物聯網平台。
物聯網平台提取RRPC訊息ID,和之前的RRPC請求訊息匹配。
物聯網平台將響應結果返回給使用者服務器。
(可選)裝置對已訂閱Topic的訊息進行處理。
調用RRpc介面時,可能出現以下情況:
裝置不線上,物聯網平台會向使用者服務器,返回裝置離線的錯誤資訊。
裝置未在逾時時間(8秒)內回複RRPC響應訊息,物聯網平台會向使用者服務器,返回逾時的錯誤資訊。
使用Topic
不同Topic格式使用方法不同:
調用自訂Topic(推薦):將RRPC與自訂Topic結合,實現不同情境需求。
調用RRPC通訊相關Topic:若您未使用自訂Topic,物聯網平台系統會使用預設通訊Topic進行通訊,應用情境相對單一,不推薦使用。
RRPC調用實踐樣本,請參見遠端控制樹莓派伺服器。