KaihongOS多实例MQTT接口 - KaihongOS技术社区 - 电子技术论坛 - 广受欢迎的专业电子论坛
分享 收藏 返回
申根换 关注 私信
[文章]

KaihongOS多实例MQTT接口

@ohos.net.khMqttExt (KaihongOS多实例MQTT接口)

KaihongOS的khNetStack模块提供了MQTT协议的多实例使用接口,支持同时使用多个mqtt的实例。
说明:
本模块首批接口从API version 9版本开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
目前支持3.1.1版本的MQTT协议。
目前支持的通配符:/、+、#。
导入模块

import khmqtt from '@ohos.net.khMqttExt';createMqttinstance

function createMqttInstance(): MqttInstance;
创建MqttInstance实例。
系统能力: SystemCapability.Communication.khNetStack
返回值:
类型说明
MqttInstanceundefined表示创建失败,MqttInstance表示成功返回实例对象的引用。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        console.log('create mqtt failed')}MqttInstance

在调用MqttInstance的方法前,需要先通过createMqttInstance创建MqttInstance实例。
on(‘connect’)

on(type: ‘connect’, callback: Callback<{code: number, reason: string}>): ResponseCode;
订阅mqtt的连接事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"connect"字符串,表示连接事件。
callbackCallback<{code: number, reason: string}>回调函数由用户创建,并通过该函数注册。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}let code = this.mqttClient.on('connect', (data) => {        console.info("data = " + JSON.stringify(data))})if (code == 0) {        console.info('on connect success')}off(‘connect’)

off(type: ‘connect’): ResponseCode;
取消订阅mqtt的连接事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"connect"字符串,表示连接事件。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}this.mqttClient.on('connect', (data) => {        console.info("data = " + JSON.stringify(data))})let code = this.mqttClient.off('connect')if (code == 0) {        console.info('off connect success')}on(‘publish’)

on(type: ‘publish’, callback: Callback<{messageId: number}>): ResponseCode;
订阅mqtt的发布消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"publish"字符串,表示发布消息事件。
callbackCallback<{messageId: number}>回调函数由用户创建,并通过该函数注册。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}let code = this.mqttClient.on('publish', (data) => {        console.info("data = " + JSON.stringify(data))})if (code == 0) {        console.info('on publish success')}off(‘publish’)

off(type: ‘publish’): ResponseCode;
取消订阅mqtt的发布消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"publish"字符串,表示发布消息事件。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}this.mqttClient.on('connect', (data) => {        console.info("data = " + JSON.stringify(data))})let code = this.mqttClient.off('publish')if (code == 0) {        console.info('off publish success')}on(‘subscribe’)

on(type: ‘subscribe’, callback: Callback<{code: number, reason: string}>): ResponseCode;
订阅mqtt的订阅消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"subscribe"字符串,表示订阅消息事件。
callbackCallback<{code: number, reason: string}>回调函数由用户创建,并通过该函数注册。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}let code = this.mqttClient.on('subscribe', (data) => {        console.info("data = " + JSON.stringify(data))})if (code == 0) {        console.info('on subscribe success')}off(‘subscribe’)

off(type: ‘subscribe’): ResponseCode;
取消订阅mqtt的订阅消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"subscribe"字符串,表示订阅消息消息事件。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        console.log('create mqtt failed')}this.mqttClient.on('connect', (data) => {        console.info("data = " + JSON.stringify(data))})let code = this.mqttClient.off('subscribe')if (code == 0) {        console.info('off subscribe success')}on(‘unsubscribe’)

on(type: ‘unsubscribe’, callback: Callback<{messageId: number}>): ResponseCode;
订阅mqtt的取消订阅消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"unsubscribe"字符串,表示取消订阅消息事件。
callbackCallback<{messageId: number}>回调函数由用户创建,并通过该函数注册。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}let code = this.mqttClient.on('unsubscribe', (data) => {        console.info("data = " + JSON.stringify(data))})if (code == 0) {        console.info('on unsubscribe success')}off(‘unsubscribe’)

off(type: ‘unsubscribe’): ResponseCode;
取消订阅mqtt的取消订阅消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"unsubscribe"字符串,表示取消订阅事件。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        console.log('create mqtt failed')}this.mqttClient.on('connect', (data) => {        console.info("data = " + JSON.stringify(data))})let code = this.mqttClient.off('unsubscribe')if (code == 0) {        console.info('off unsubscribe success')}on(‘disconnect’)

on(type: ‘disconnect’, callback: Callback<{code: number, reason: string}>): ResponseCode;
订阅mqtt的断开连接事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"disconnect"字符串,表示断开连接服务器事件。
callbackCallback<{code: number, reason: string}>>回调函数由用户创建,并通过该函数注册。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}let code = this.mqttClient.on('disconnect', (data) => {        console.info("data = " + JSON.stringify(data))})if (code == 0) {        console.info('on disconnect success')}off(‘disconnect’)

off(type: ‘disconnect’): ResponseCode;
取消订阅mqtt的断开连接事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"disconnect"字符串,表示断开连接服务器事件。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        console.log('create mqtt failed')}this.mqttClient.on('disconnect', (data) => {        console.info("data = " + JSON.stringify(data))})let code = this.mqttClient.off('disconnect')if (code == 0) {        console.info('off disconnect success')}on(‘message’)

on(type: ‘message’,callback: Callback<{MqttMessage}>): ResponseCode;
订阅mqtt的接收消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"message"字符串,表示接收订消息事件。
callbackCallback<{MqttMessage}>回调函数由用户创建,并通过该函数注册。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance()if(this.mqttClient == undefined){        console.log('create mqtt failed')}let code = this.mqttClient.on('message', (data) => {        console.info("data = " + JSON.stringify(data))})if (code == 0) {        console.info('on message success')}off(‘message’)

off(type: ‘message’): ResponseCode;
取消订阅mqtt的接收消息事件。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
typestring填写"message"字符串,表示接收消息事件。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        console.log('create mqtt failed')}this.mqttClient.on('message', (data) => {        console.info("data = " + JSON.stringify(data))})let code = this.mqttClient.off('message')if (code == 0) {        console.info('off message success')}connect

connect(host: string, port: number, keepalive: number): ResponseCode;
连接mqtt服务器。
说明: 可以通过on(‘connect’)获取连接结果。
需要权限:ohos.permission.INTERNET
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
hoststring需要连接的mqtt服务器。
portnumber端口号。
keepalivenumber保活时间。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}connectAsync

connectAsync(host: string, port: number, keepalive: number): ResponseCode;
异步连接mqtt服务器。
说明: 可以通过on(‘connect’)获取连接结果。
需要权限:ohos.permission.INTERNET
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
hoststring需要连接的mqtt服务器。
portnumber端口号。
keepalivenumber保活时间。
返回值:
类型说明
ResponseCode0表示成功发起异步连接,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connectAsync('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}setWill

setWill(topic: string, payload: string, qos?: number): ResponseCode;
设置mqtt 客户端的遗嘱消息,可以使得设备在意外断开连接时发出遗嘱消息。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
topicstring遗嘱消息的主题。
payloadstring | ArrayBuffer遗嘱消息。
qosnumber服务质量,共有三种质量0、1、2可以选择,不填则默认值为0。
0,“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。
1,“至少一次”,确保消息到达,但消息重复可能会发生。
2,“只有一次”,确保消息到达一次。
返回值:
类型说明
ResponseCode0表示操作成功,其他值表示操作失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}let willMsg = [0x12, 0x34]let data = new Uint8Array(willMsg)let code = this.mqttClient.setWill('will', data.buffer, 1000)if (code == 0) {        console.log('setWill success')}clearWill

clearWill(): ResponseCode;
清除遗嘱消息。
系统能力: SystemCapability.Communication.khNetStack
返回值
类型说明
ResponseCode0表示清除成功,其他值表示清除失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}let code = this.mqttClient.clearWill()if (code == 0) {        console.log('clearWill success')}publish

publish(topic: string, payload: string | ArrayBuffer, qos?: number): ResponseCode;
发布相关主题的消息。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
topicstring消息相关的主题。
payloadstring | ArrayBuffer需要发布的消息内容。
qosnumber服务质量,共有三种质量0、1、2可以选择,不填则默认值为0。
0,“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。
1,“至少一次”,确保消息到达,但消息重复可能会发生。
2,“只有一次”,确保消息到达一次。
返回值:
类型说明
ResponseCode0表示发布成功,其他值表示发布失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}let msg = [0xaa, 0x55, 0x02, 0x72, 0x10, 0x00, 0x04, 0x02, 0x16, 0x01, 0x71]let data = new Uint8Array(msg)let code = this.mqttClient.publish('testtopic', data.buffer)if (code == 0) {        console.log('publish success')}subscribe

subscribe(sub: string, qos?: number): ResponseCode;
订阅相关主题的消息。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
substring订阅的消息的主题。
qosnumber服务质量,共有三种质量0、1、2可以选择,不填则默认值为0。
0,“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。
1,“至少一次”,确保消息到达,但消息重复可能会发生。
2,“只有一次”,确保消息到达一次。
返回值:
类型说明
ResponseCode0表示订阅成功,其他值表示订阅失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}let code = this.mqttClient.subscribe('testtopic')if (code == 0) {        console.log('subscribe success')}unsubscribe

unsubscribe(sub: string): ResponseCode;
取消订阅相关主题的消息。
系统能力: SystemCapability.Communication.khNetStack
参数:
[tr]参数名类型必填说明[/tr]
substring取消订阅的消息的主题。
返回值:
类型说明
ResponseCode0表示取消订阅成功,其他值表示取消订阅失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}let code = this.mqttClient.unsubscribe('testtopic')if (code == 0) {        console.log('unsubscribe success')}disconnect

disconnect(): ResponseCode;
断开与mqtt服务器的连接。
系统能力: SystemCapability.Communication.khNetStack
返回值:
类型说明
ResponseCode0表示断开连接成功,其他值表示断开连接失败。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = this.mqttClient.connect('127.0.0.1', 1883, 1000)if (code == 0) {        console.log('connect failed')}let code = this.mqttClient.disconnect()if (code == 0) {        console.log('disconnect success')}destroyMqttInstance

destroyMqttInstance(client: MqttInstance): ResponseCode;
移除创建的MqttInstance实例。
系统能力: SystemCapability.Communication.khNetStack
参数:
参数名类型必填说明
clientMqttInstanceMqttInstance实例。
返回值:
类型说明
ResponseCode总是返回0。
示例:
import khmqtt from '@ohos.net.khMqttExt';@State mqttClient:any = undefined...this.mqttClient = khmqtt.createMqttInstance();if(this.mqttClient == undefined){        return}let code = khmqtt.destroyMqttInstance(this.mqttClient)if(code == 0){    console.log("destroyMqttInstance success")}MqttMessage

订阅的消息格式。
名称参数类型说明
midnumber消息ID。
topicstring消息所属主题。
payloadArrayBuffer消息内容。
payloadlennumber消息长度。
qosnumber服务质量。
retainboolean是否保留。
ResponseCode

返回值枚举。
名称说明
MQTT_OK0返回值正确。
MQTT_NOT_INIT-1没有初始化。
MQTT_INVALID_PARAM-2不正确的参数。
MQTT_INIT_LIB_FAILED-3库不正确。
MQTT_INIT_CLIENT_FAILED-4初始化客户端失败。
MQTT_SET_TLS_FAILED-5设置TLS失败。
MQTT_CONNECT_FAILED-6连接失败。
MQTT_PUBLISH_FAILED-7发布消息失败。
MQTT_SUBSCRIBE_FAILED-8订阅消息失败。
MQTT_UNSUBSCRIBE_FAILED-9取消订阅失败。
MQTT_DISCONNECT_FAILED-10断开连接失败。
MQTT_ON_FAILED-11监听失败。
MQTT_OFF_FAILED-12取消监听失败。
MQTT_SET_WILL_FAILED-13设置遗嘱消息失败。
MQTT_CLEAR_WILL_FAILED-14清除遗嘱消息失败。
MQTT_DESTROY_MQTTINSTANCE_FAILED-15暂未使用。
MQTT_CLEAN_MQTT_FAILED-16暂未使用。
MQTT_ENABLE_BROKER_FAILED-17暂未使用。
MQTT_DISABLE_BROKER_FAILED-18暂未使用。
MQTT_SET_SECURITYINFO_FAILED-19暂未使用。

更多回帖

×
发帖