MQTT模块

说明: 本模块首批接口从API version 1开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

简介

使应用程序能够连接到MQTT代理以发布消息、订阅主题和接收发布的消息。

导入模块

import mqtt from '@system.mqtt';

createMqtt

createMqtt(options: MqttAsyncClientOptions): MqttAsyncClient

创建mqtt客户端。

参数:

参数名类型必填说明
optionsMqttAsyncClientOptions客户端参数

 

返回值:

类型说明
MqttAsyncClientmqtt客户端,里面包括connect,publish等方法

 

示例:

    this.mqttAsyncClient = MqttAsync.createMqtt({
        url: "ip:port",
        clientId: "e5fatos4jh3l79lndb0bs",
        persistenceType: 1,
    })

connect

connect(options: MqttConnectOptions, callback: AsyncCallback<MqttResponse>): void

连接mqtt服务器。

参数:

参数名类型必填说明
optionsMqttConnectOptions参考[MqttConnectOptions]
callbackAsyncCallback< [MqttResponse]>回调函数

 

示例:

​
    let options = {
        //set userName and password
        userName: "",
        password: "",
        connectTimeout: 30,
        version: 0,
    };
    this.mqttAsyncClient.connect(options, (err, data) => {
        // to do Something
    });

connect

connect(options: MqttConnectOptions): Promise<MqttResponse>

连接mqtt服务器。

参数:

参数名类型必填说明
optionsMqttConnectOptions参考[MqttConnectOptions]

 

返回值:

类型说明
Promise<[MqttResponse]>以Promise形式返回发起连接的结果。

 

示例:

​
    let options = {
        //set userName and password
        userName: "",
        password: "",
        connectTimeout: 30,
        version: 0,
    };
    this.mqttAsyncClient.connect(options).then((data) => {
        console.log("mqtt connect success "+ JSON.stringify(data));
    }).catch((err) => {
        console.log("mqtt connect fail"+JSON.stringify(err))
    })
​
    try{
        let result = await this.mqttAsyncClient.connect(options)
        console.log("mqtt connect success "+ JSON.stringify(result));
    }catch(err){
        console.log("mqtt connect fail "+ JSON.stringify(err));
    }

publish

publish(options: MqttPublishOptions, callback: AsyncCallback<MqttResponse>): void

发布消息。

参数:

参数名类型必填说明
optionsMqttPublishOptions参考[MqttPublishOptions]
callbackAsyncCallback< [MqttResponse]>回调函数

 

示例:

    let publishOption = {
        topic: "domotopic",
        qos: 1,
        payload: "haishangdebing",
    }
    this.mqttAsyncClient.publish(publishOption, (err, data) => {
        // to do Something
    });

publish

publish(options: MqttPublishOptions): Promise<MqttResponse>

发布消息。

参数:

参数名类型必填说明
optionsMqttPublishOptions参考[MqttPublishOptions]

 

返回值:

类型说明
Promise<[MqttResponse]>以Promise形式返回发布的结果。

 

示例:

    let publishOption = {
        topic: "domotopic",
        qos: 1,
        payload: "haishangdebing",
    }
    this.mqttAsyncClient.publish(publishOption, (err, data) => {
        console.log("mqtt publish success "+ JSON.stringify(data));
    }).catch((err) => {
        console.log("mqtt publish fail "+ JSON.stringify(err));
    })
​
    try{
        let result = await this.mqttAsyncClient.publish(publishOption)
        console.log("mqtt publish success "+ JSON.stringify(result));
    }catch(err){
        console.log("mqtt publish fail "+ JSON.stringify(err));
    }

subscribe

subscribe(options: MqttSubscribeOptions, callback: AsyncCallback<MqttResponse>): void

订阅主题。

参数:

参数名类型必填说明
optionsMqttSubscribeOptions参考[MqttSubscribeOptions]
callbackAsyncCallback< [MqttResponse]>回调函数

 

示例:

    let subscribeOption = {
        topic: "domotopic",
        qos: 2
    }
    this.mqttAsyncClient.subscribe(subscribeOption, (err, data) => {
        // to do Something
    });

subscribe

subscribe(options: MqttSubscribeOptions): Promise<MqttResponse>

订阅主题。

参数:

参数名类型必填说明
optionsMqttSubscribeOptions参考[MqttSubscribeOptions]

 

返回值:

类型说明
Promise<[MqttResponse]>以Promise形式返回订阅的结果。

 

示例:

    let subscribeOption = {
        topic: "domotopic",
        qos: 2
    }
    this.mqttAsyncClient.subscribe(subscribeOption).then((data) => {
        console.log("mqtt subscribe success "+ JSON.stringify(result));
    }).catch((err) => {
        console.log("mqtt subscribe fail "+ JSON.stringify(err));
    })
​
    try{
        let result = await this.mqttAsyncClient.subscribe(subscribeOption)
        console.log("mqtt subscribe success "+ JSON.stringify(result));
    }catch(err){
        console.log("mqtt subscribe fail "+ JSON.stringify(err));
    }

unsubscribe

unsubscribe(options: MqttSubscribeOptions, callback: AsyncCallback<MqttResponse>): void

取消订阅。

参数:

参数名类型必填说明
optionsMqttSubscribeOptions参考[MqttSubscribeOptions]
callbackAsyncCallback< [MqttResponse]>回调函数

 

示例:

    let subscribeOption = {
        topic: "domotopic",
        qos: 2
    }
    this.mqttAsyncClient.unsubscribe(subscribeOption, (err, data) => {
         // to do Something
    });

unsubscribe

unsubscribe(options: MqttSubscribeOptions): Promise<MqttResponse>

取消订阅。

参数:

参数名类型必填说明
optionsMqttSubscribeOptions参考[MqttSubscribeOptions])

 

返回值:

类型说明
Promise<[MqttResponse]>以Promise形式返回取消订阅的结果。

 

示例:

    let subscribeOption = {
        topic: "domotopic",
        qos: 2
    }
    this.mqttAsyncClient.unsubscribe(subscribeOption).then((data) => {
        console.log("mqtt unsubscribe success "+ JSON.stringify(result));
    }).catch((err) => {
        console.log("mqtt unsubscribe fail "+ JSON.stringify(err));
    })

    try{
        let result = await this.mqttAsyncClient.unsubscribe(subscribeOption)
        console.log("mqtt unsubscribe success "+ JSON.stringify(result));
    }catch(err){
        console.log("mqtt unsubscribe fail "+ JSON.stringify(err));
    }

messageArrived

messageArrived(callback: AsyncCallback<MqttMessage>): void

接收消息,使用此接口后,当订阅的主题有消息发布时,会自动接收到消息。

参数:

参数名类型必填说明
callbackAsyncCallback< [MqttMessage]>回调函数

 

示例:

    this.mqttAsyncClient.messageArrived((err, data) => {
        // to do Something
    });

disconnect

disconnect(callback: AsyncCallback<MqttResponse>): void

断开连接。

参数:

参数名类型必填说明
callbackAsyncCallback< [MqttResponse]>回调函数

 

示例:

    this.mqttAsyncClient.disconnect((err, data) => {
        // to do Something
    });

disconnect

disconnect(): Promise<MqttResponse>

断开连接。

返回值:

类型说明
Promise<[MqttResponse]>以Promise形式返回断开连接的结果。

 

示例:

    this.mqttAsyncClient.disconnect().then((data) => {
        console.log("mqtt disconnect success "+ JSON.stringify(result));;
    }).catch((err) => {
        console.log("mqtt disconnect fail "+ JSON.stringify(err));
    })

    try{
        let result = await this.mqttAsyncClient.disconnect()
        console.log("mqtt disconnect success "+ JSON.stringify(result));
    }catch(err){
        console.log("mqtt disconnect fail "+ JSON.stringify(err));
    }

connectLost

connectLost(callback: AsyncCallback<MqttResponse>): void

当被动的断开连接后的回调(比如断网),可以在回调中尝试重新连接。

参数:

参数名类型必填说明
callbackAsyncCallback< [MqttResponse]>回调函数

 

示例:

    this.mqttAsyncClient.connectLost((err, data) => {
        // to do Something
    });

isConnected

isConnected(): Promise<boolean>

是否已连接。

返回值:

类型说明
Promise<boolean>以Promise形式返回判断是否连接的结果。

 

示例:

    this.mqttAsyncClient.isConnected().then((data) => {
        console.log("result: "+data)
    });

    let result = await this.mqttAsyncClient.isConnected() //true or false

reconnect

reconnect(): Promise<boolean>

重新连接(必须之前连接过)。

返回值:

类型说明
Promise<boolean>以Promise形式返回重连的的结果。

 

示例:

    this.mqttAsyncClient.reconnect().then((data) => {
        console.log('result: ' + data)
    });
​
    let result = await this.mqttAsyncClient.reconnect() //true or false

destroy

destroy(): Promise<boolean>

销毁客户端。

返回值:

类型说明
Promise<boolean>以Promise形式返回销毁的结果。

 

示例:

    this.mqttAsyncClient.destroy().then((data) => {
        console.log('result: ' + data)
    });
​
    let result = await this.mqttAsyncClient.destroy() //true or false
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐