更新记录

0.2.6(2025-09-17)

  • fix: 修复uniapp打包问题

0.2.5(2025-09-16)

  • fix: 修复通配符无法接收信息的问题

0.2.4(2025-09-03)

  • fix: 修复uniapp ios打包问题
查看更多

平台兼容性

uni-app(4.45)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
5.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
- -

uni-app x(4.61)

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0

lime-mqtt MQTT通信组件

一个功能强大的MQTT通信组件,提供跨平台的MQTT协议通信能力,支持连接、订阅、发布、断开等基础操作,适用于物联网、实时通信等场景。支持安卓、IOS、鸿蒙Next、Web、微信小程序等平台。

文档链接

📚 组件详细文档请访问以下站点:

安装方法

  1. 在uni-app插件市场中搜索并导入lime-mqtt
  2. 导入后可能需要重新编译项目
  3. APP开发需要使用自定义基座

代码演示

初始化客户端

首先需要导入并初始化MQTT客户端。

import { useMQTT } from '@/uni_modules/lime-mqtt'
const mqttClient = useMQTT()

连接MQTT服务器

连接到MQTT服务器,可配置多种参数。

import type { MQTTConnectOptions } from '@/uni_modules/lime-mqtt'

mqttClient.connect({
  host: "broker.example.com",  // MQTT服务器地址
  port: 8083,                  // 服务器端口
  clientId: "myClient_123",    // 可选,默认自动生成
  username: "user",            // 可选,用户名
  password: "pass",            // 可选,密码
  useSSL: true,                // 是否使用SSL,默认true
  keepalive: 60,               // 心跳间隔,默认60秒
  timeout: 30,                 // 超时时间,默认30秒
  reconnect: false,            // 是否自动重连,默认false
  success: (res) => {
    console.log("连接成功:", res.data.errMsg)
  },
  fail: (err) => {
    console.error("连接失败:", err.errorCode, err.errorMessage)
  }
} as MQTTConnectOptions)

断开连接

主动断开与MQTT服务器的连接。

import type { MQTTDisconnectOptions } from '@/uni_modules/lime-mqtt'

mqttClient.disconnect({
  success: (res) => {
    console.log("已断开连接:", res.data.errMsg)
  },
  fail: (err) => {
    console.error("断开连接失败:", err.errorCode)
  }
} as MQTTDisconnectOptions)

订阅主题

订阅指定的MQTT主题,可设置服务质量(QoS)。

import type { MQTTSubscribeOptions } from '@/uni_modules/lime-mqtt'

mqttClient.subscribe({
  topic: "home/sensor/temperature",  // 要订阅的主题
  qos: 1,                            // 服务质量,0-2
  success: (res) => {
    console.log(`订阅成功: ${res.data.topic}, QoS: ${res.data.qos}`)
  },
  fail: (err) => {
    console.error("订阅失败:", err.errorCode)
  }
} as MQTTSubscribeOptions)

取消订阅

取消订阅指定的MQTT主题。

import type { MQTTUnSubscribeOptions } from '@/uni_modules/lime-mqtt'

mqttClient.unsubscribe({
  topic: "home/sensor/temperature",  // 要取消订阅的主题
  success: (res) => {
    console.log(`已取消订阅: ${res.data.topic}`)
  },
  fail: (err) => {
    console.error("取消订阅失败:", err.errorCode)
  }
} as MQTTUnSubscribeOptions)

发布消息

向指定主题发布消息。

import type { MQTTPublishOptions } from '@/uni_modules/lime-mqtt'

mqttClient.publish({
  topic: "home/light/control",  // 发布的主题
  payload: "turn_on",           // 消息内容
  qos: 1                        // 服务质量,0-2
  success: (res) => {
    console.log(`消息发送成功: ${res.data.topic}`)
  },
  fail: (err) => {
    console.error("消息发送失败:", err.errorCode)
  }
} as MQTTPublishOptions)

监听消息

监听订阅主题的消息。

import type { MQTTMessage } from '@/uni_modules/lime-mqtt'

// 定义消息处理函数
const messageHandler = (msg: MQTTMessage) => {
  console.log(`收到消息 [${msg.topic}]: ${msg.payloadString}`)
  console.log("QoS:", msg.qos)
  console.log("是否保留消息:", msg.retained)

  // 如果需要处理二进制数据
   console.log("二进制数据:", msg.payload)
}

// 添加消息监听
mqttClient.onMessage(messageHandler)

// 移除特定的消息监听
mqttClient.offMessage(messageHandler)

// 移除所有消息监听
mqttClient.offMessage()

监听连接状态

监听MQTT连接状态变化。

import type { StateChangeCallback } from '@/uni_modules/lime-mqtt'

// 定义状态变化处理函数
const stateHandler: StateChangeCallback = (stateInfo) => {
  console.log(`连接状态变化: ${stateInfo.state ? '已连接' : '已断开'}`)
  console.log(`状态变化时间: ${new Date(stateInfo.timestamp).toLocaleString()}`)
}

// 添加状态监听
mqttClient.onStateChange(stateHandler)

// 移除特定的状态监听
mqttClient.offStateChange(stateHandler)

// 移除所有状态监听
mqttClient.offStateChange()

API文档

IMQTTClient 接口

方法名 说明 参数 返回值
connect 连接MQTT服务器 MQTTConnectOptions void
disconnect 断开MQTT连接 MQTTDisconnectOptions void
subscribe 订阅主题 MQTTSubscribeOptions void
unsubscribe 取消订阅 MQTTUnSubscribeOptions void
publish 发布消息 MQTTPublishOptions void
onMessage 监听消息 MessageCallback void
offMessage 移除消息监听 MessageCallback (可选) void
onStateChange 监听连接状态变化 StateChangeCallback void
offStateChange 移除状态变化监听 StateChangeCallback (可选) void

属性

属性名 说明 类型
isConnected 当前连接状态 boolean

参数类型

MQTTConnectOptions

参数名 说明 类型 必填 默认值
host MQTT服务器地址 string -
port MQTT服务器端口 number -
clientId 客户端ID string 自动生成
username 用户名 string -
password 密码 string -
path WebSocket路径 string '/mqtt'
protocol 协议前缀 string -
useSSL 是否使用SSL boolean true
keepalive 心跳间隔(秒) number 60
timeout 超时时间(秒) number 30
reconnect 是否自动重连 boolean false
success 连接成功回调 SuccessCallback -
fail 连接失败回调 FailCallback -
complete 完成回调 Function -

MQTTDisconnectOptions

参数名 说明 类型 必填 默认值
success 断开成功回调 SuccessCallback -
fail 断开失败回调 FailCallback -
complete 完成回调 Function -

MQTTSubscribeOptions

参数名 说明 类型 必填 默认值
topic 订阅的主题 string -
qos 服务质量(0-2) number 0
success 订阅成功回调 SuccessCallback -
fail 订阅失败回调 FailCallback -
complete 完成回调 Function -

MQTTUnSubscribeOptions

参数名 说明 类型 必填 默认值
topic 取消订阅的主题 string -
success 取消订阅成功回调 SuccessCallback -
fail 取消订阅失败回调 FailCallback -
complete 完成回调 Function -

MQTTPublishOptions

参数名 说明 类型 必填 默认值
topic 发布的主题 string -
payload 消息内容 string -
qos 服务质量(0-2) number 0
success 发布成功回调 SuccessCallback -
fail 发布失败回调 FailCallback -
complete 完成回调 Function -

MQTTMessage

属性名 说明 类型
topic 消息主题 string
qos 服务质量 number
payload 二进制消息内容 Uint8Array
payloadString 字符串消息内容 string
retained 是否为保留消息 boolean

错误代码参考

错误码 说明
910001 连接异常
910002 订阅/取消订阅/发布失败
910004 未连接或连接已断开
910005 缺少host或port参数

常见问题

  • iOS平台注意事项: iOS平台上的offMessage和offStateChange暂时无法清空指定函数,只能全部清空(HBuilderX 4.74版本)。
  • 小程序连接问题: 微信小程序连接MQTT服务器时,需要在小程序管理后台配置域名白名单。
  • 通配符订阅: 使用通配符订阅时,取消订阅也需要使用相同的通配符格式。
  • 自动重连: 设置reconnect为true时,客户端会在连接断开后自动尝试重新连接。
  • QoS级别:
    • QoS 0: 最多发送一次,可能丢失
    • QoS 1: 至少发送一次,可能重复
    • QoS 2: 只发送一次,不会丢失也不会重复

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者:

支付宝赞助 微信赞助
支付宝赞赏码 微信赞赏码

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。