dxMqttClient
1. 概述
此模块是 dejaOS 官方系统模块库的一部分,用于基于 Eclipse Paho MQTT C 库的 MQTT 客户端功能。 它为 MQTT 客户端提供单例接口,具有全面的功能:
- 连接/断开 MQTT 代理
- 发布消息和订阅主题
- 支持 MQTTS(基于 SSL/TLS 的 MQTT)
- 处理连接丢失和消息传递回调
- 不支持跨线程 MQTT 操作支持
2. 文件
- dxMqttClient.js
- libvbar-m-dxmqttclient.so
- 确保这 2 个文件包含在您项目根目录下的 dxmodules 子目录中
3. 依赖项
- dxLogger
4. 兼容设备
兼容所有运行 dejaOS v2.0+ 的设备。设备必须具有网络连接支持。
5. 使用方法
基本用法
import mqtt from "../dxmodules/dxMqttClient.js";
// 初始化 MQTT 客户端
mqtt.init("tcp://test.mosquitto.org:1883", "my-device-123");
// 设置回调处理器
mqtt.setCallbacks({
onConnectSuccess: () => {
logger.info("已连接到 MQTT 代理");
// 订阅主题
mqtt.subscribe("commands/light", { qos: 1 });
},
onMessage: (topic, payload, qos, retained) => {
logger.info(`收到消息: ${topic} = ${payload}`);
},
onConnectionLost: (reason) => {
logger.info("连接丢失:", reason);
},
});
// 连接到代理
mqtt.connect({
username: "user",
password: "password",
keepAlive: 60,
cleanSession: true,
});
// 发布消息
mqtt.publish("device/status", "online", { qos: 1, retained: true });
// 在主循环中处理事件
setInterval(() => {
mqtt.loop();
}, 50);
// 完成后断开连接
mqtt.disconnect();
SSL/TLS 安全连接
// 连接到安全代理 (例如: test.mosquitto.org:8883)
mqtt.init("ssl://test.mosquitto.org:8883", "my-secure-device");
// 使用 SSL 选项连接
mqtt.connect({
ssl: {
enableServerCertAuth: true,
// CA 证书文件路径
caFile: "/app/code/src/mosquitto.org.crt",
// 可选: 用于双向认证的客户端证书和私钥
// certFile: "/path/to/client.crt",
// keyFile: "/path/to/client.key",
},
});