js实现mqtt
使用 JavaScript 实现 MQTT
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅协议,适用于物联网(IoT)和实时通信场景。以下是使用 JavaScript 实现 MQTT 的几种方法。
安装 MQTT 客户端库
常用的 JavaScript MQTT 客户端库是 mqtt.js,可以通过 npm 安装:
npm install mqtt
连接到 MQTT 代理
以下代码展示了如何连接到 MQTT 代理(如 Mosquitto 或 EMQX):
const mqtt = require('mqtt');
// 连接到 MQTT 代理
const client = mqtt.connect('mqtt://test.mosquitto.org');
client.on('connect', () => {
console.log('Connected to MQTT broker');
});
client.on('error', (err) => {
console.error('Connection error:', err);
});
发布消息
发布消息到指定主题:

client.publish('topic/test', 'Hello MQTT', (err) => {
if (err) {
console.error('Publish error:', err);
} else {
console.log('Message published');
}
});
订阅主题
订阅一个或多个主题并接收消息:
client.subscribe('topic/test', (err) => {
if (err) {
console.error('Subscribe error:', err);
} else {
console.log('Subscribed to topic/test');
}
});
client.on('message', (topic, message) => {
console.log(`Received message on ${topic}: ${message.toString()}`);
});
断开连接
手动断开与 MQTT 代理的连接:

client.end();
使用 WebSocket 连接
如果 MQTT 代理支持 WebSocket,可以通过以下方式连接:
const client = mqtt.connect('ws://test.mosquitto.org:8080/mqtt');
安全连接(TLS/SSL)
如果需要加密连接,可以使用 mqtts:// 协议:
const client = mqtt.connect('mqtts://test.mosquitto.org', {
rejectUnauthorized: false // 仅用于测试,生产环境应配置正确的证书
});
完整示例
以下是一个完整的发布和订阅示例:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://test.mosquitto.org');
client.on('connect', () => {
console.log('Connected');
client.subscribe('topic/test');
client.publish('topic/test', 'Hello MQTT');
});
client.on('message', (topic, message) => {
console.log(`Received: ${message.toString()}`);
});
client.on('error', (err) => {
console.error('Error:', err);
});
注意事项
- 确保 MQTT 代理地址和端口正确。
- 在生产环境中使用 TLS/SSL 加密连接。
- 处理连接错误和消息丢失的情况。
- 避免频繁发布和订阅,以减少网络负载。
通过以上方法,可以轻松在 JavaScript 中实现 MQTT 的发布和订阅功能。






