更新记录
0.2.9(2025-10-16)
0.2.8(2025-10-16)
0.2.7(2025-10-15)
查看更多
平台兼容性
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、微信小程序等平台。
文档链接
📚 组件详细文档请访问以下站点:
安装方法
- 在uni-app插件市场中搜索并导入
lime-mqtt
- 导入后可能需要重新编译项目
- 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: 只发送一次,不会丢失也不会重复
支持与赞赏
如果你觉得本插件解决了你的问题,可以考虑支持作者:
| 支付宝赞助 |
微信赞助 |
 |
 |