js 实现mqtt
使用 JavaScript 实现 MQTT
MQTT 是一种轻量级的发布/订阅消息传输协议,适用于物联网和实时通信场景。以下是使用 JavaScript 实现 MQTT 的几种方法。
通过 MQTT.js 库实现
MQTT.js 是一个流行的 JavaScript MQTT 客户端库,支持浏览器和 Node.js 环境。
安装 MQTT.js:
npm install mqtt
浏览器或 Node.js 中使用:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://broker.hivemq.com');
client.on('connect', () => {
client.subscribe('topic/test');
client.publish('topic/test', 'Hello MQTT');
});
client.on('message', (topic, message) => {
console.log(`Received message on ${topic}: ${message.toString()}`);
});
浏览器中使用 WebSocket 连接 MQTT
MQTT over WebSocket 允许浏览器直接与 MQTT 代理通信。
const client = mqtt.connect('ws://broker.hivemq.com:8083/mqtt');
client.on('connect', () => {
console.log('Connected to MQTT via WebSocket');
});
使用 Paho MQTT 客户端
Paho 是 Eclipse 提供的 MQTT 客户端库,适合浏览器环境。
引入 Paho 库:
<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.1.0/paho-mqtt.min.js"></script>
JavaScript 代码:
const client = new Paho.MQTT.Client('broker.hivemq.com', 8083, 'clientId');
client.onConnectionLost = () => console.log('Connection lost');
client.onMessageArrived = (message) => console.log(`Message: ${message.payloadString}`);
client.connect({
onSuccess: () => {
client.subscribe('topic/test');
const message = new Paho.MQTT.Message('Hello Paho');
message.destinationName = 'topic/test';
client.send(message);
}
});
使用 MQTT 的 TLS/SSL 加密
对于安全连接,可以使用 TLS/SSL 加密的 MQTT。
const fs = require('fs');
const mqtt = require('mqtt');
const options = {
key: fs.readFileSync('client-key.pem'),
cert: fs.readFileSync('client-cert.pem'),
rejectUnauthorized: false
};
const client = mqtt.connect('mqtts://broker.example.com', options);
错误处理与重连
MQTT 客户端通常需要处理连接中断和自动重连。

client.on('error', (err) => console.error('MQTT error:', err));
client.on('close', () => console.log('Connection closed'));
client.on('reconnect', () => console.log('Reconnecting...'));
以上方法涵盖了从基础连接到安全通信的实现,适用于大多数 JavaScript 环境。根据项目需求选择合适的库和配置即可。






