日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

RRPC能力

背景信息

RRPC是指用戶云端通過云端API發起一個RRPC調用,該調用將同步返回設備的響應。

設備端會收到一個同步請求的topic, 格式如 /ext/rrpc/{messageId}/{rrpc_topic} 或者 /sys/{pk}/{dn}/rrpc/request/${msgId},設備端接收到該消息后進行處理,并將處理結果publish到 /ext/rrpc/{messageId}/{rrpc_topic} 或者 /ext/rrpc/${msgId}/${topic}

消息通信API

通過調用云端該RRPC接口,觸發向設備發起RRPC同步請求。

設備管理API

通過調用云端該同步服務接口,或者在物聯網平臺定義設備的服務為同步服務,并觸發同步服務調用,即可向設備發起RRPC同步請求。

接口調用

在完成整個RRPC調用鏈路的過程中,設備端需要先確保SDK初始化成功,即MQTT建聯成功。

RRPC監聽和回復

云端RRPC請求可以在下行監聽的位置接收到,具體接收到的topic由調用方指定。

// 這個是全局的下行監聽設置接口
LinkKit.getInstance().registerOnPushListener(notifyListener);
        /**
     * 下行監聽器,云端 MQTT 下行數據都會通過這里回調
     */
private static IConnectNotifyListener notifyListener = new IConnectNotifyListener() {
    /**
         * onNotify 會觸發的前提是 shouldHandle 沒有指定不處理這個topic
         * @param connectId 連接類型,這里判斷是否長鏈 connectId == ConnectSDK.getInstance().getPersistentConnectId()
         * @param topic 下行的topic
         * @param aMessage 下行的數據內容
         */
    @Override
    public void onNotify(String connectId, String topic, AMessage aMessage) {
        String data = new String((byte[]) aMessage.data);
        // 服務端返回數據示例  data = {"method":"thing.service.test_service","id":"123374967","params":{"vv":60},"version":"1.0.0"}
    }
    /**
         * @param connectId 連接類型,這里判斷是否長鏈 connectId == ConnectSDK.getInstance().getPersistentConnectId()
         * @param topic 下行topic
         * @return 是否要處理這個topic,如果為true,則會回調到onNotify;如果為false,onNotify不會回調這個topic相關的數據。建議默認為true。
         */
    @Override
    public boolean shouldHandle(String connectId, String topic) {
        return true;
    }
    /**
         * @param connectId 連接類型,這里判斷是否長鏈 connectId == ConnectSDK.getInstance().getPersistentConnectId()
         * @param connectState {@link ConnectState}
         *     CONNECTED, 連接成功
         *     DISCONNECTED, 已斷鏈
         *     CONNECTING, 連接中
         *     CONNECTFAIL; 連接失敗
         */
    @Override
    public void onConnectStateChange(String connectId, ConnectState connectState) {
        Log.d(TAG, "onConnectStateChange() called with: connectId = [" + connectId + "], connectState = [" + connectState + "]");
    }
};

調用示例

設備端

根據調用者需要的數據,RRPC響應將返回相應的數據內容,以下示例默認返回空的data。

// 可使用全局的下行監聽
LinkKit.getInstance().registerOnPushListener(notifyListener);
private IConnectNotifyListener notifyListener = new IConnectNotifyListener() {
    @Override
    public void onNotify(String connectId, String topic, AMessage aMessage) {
            if (CONNECT_ID.equals(connectId) && !TextUtils.isEmpty(topic) &&
                    topic.startsWith("/ext/rrpc/")) {
            //示例 topic=/ext/rrpc/1138654706478941696//a1ExY4afKY1/testDevice/user/get
            //ALog.d(TAG, "receice Message=" + new String((byte[]) aMessage.data));
            // 服務端返回數據示例  {"method":"thing.service.test_service","id":"123374967","params":{"vv":60},"version":"1.0.0"}
            MqttPublishRequest request = new MqttPublishRequest();
            request.isRPC = false;
            request.topic = topic;
            String[] array = topic.split("/");
            String resId = array[3];
            request.msgId = resId;
            // TODO 用戶根據實際情況填寫 僅做參考
            request.payloadObj = "{\"id\":\"" + resId + "\", \"code\":\"200\"" + ",\"data\":{} }";
            LinkKit.getInstance().publish(request, new IConnectSendListener() {
                @Override
                public void onResponse(ARequest aRequest, AResponse aResponse) {
                                        // 響應成功
                }
                @Override
                public void onFailure(ARequest aRequest, AError aError) {
                                        // 響應失敗
                }
                    });
        }
    }
    @Override
    public boolean shouldHandle(String connectId, String topic) {
        return true;
    }
    @Override
    public void onConnectStateChange(String connectId, ConnectState connectState) {
        Log.d(TAG, "onConnectStateChange() called with: connectId = [" + connectId + "], connectState = [" + connectState + "]");
    }
};

云端

云端觸發RRPC調用代碼參考:調用自定義topic RRPC