js实现mqtt
MQTT 协议简介
MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅协议,适用于物联网(IoT)和低带宽环境。JavaScript 可通过库如 MQTT.js 实现 MQTT 客户端功能。
安装 MQTT.js
通过 npm 或 yarn 安装:
npm install mqtt --save
# 或
yarn add mqtt
基本用法示例
连接到 MQTT 代理
const mqtt = require('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.subscribe('topic/test', (err) => {
if (!err) console.log('Subscribed to topic/test');
});
发布消息
client.publish('topic/test', 'Hello MQTT');
接收消息
client.on('message', (topic, message) => {
console.log(`Received message on ${topic}: ${message.toString()}`);
});
进阶配置
连接选项
可传递用户名、密码等参数:
const options = {
username: 'your_username',
password: 'your_password',
keepalive: 60 // 心跳间隔(秒)
};
const client = mqtt.connect('mqtt://broker.example.com', options);
TLS/SSL 连接
const fs = require('fs');
const options = {
key: fs.readFileSync('client-key.pem'),
cert: fs.readFileSync('client-cert.pem'),
ca: [fs.readFileSync('server-cert.pem')]
};
const client = mqtt.connect('mqtts://broker.example.com', options);
断开连接与重连
// 手动断开连接
client.end();
// 自动重连(需库支持或自定义逻辑)
client.on('close', () => {
console.log('Connection closed, attempting to reconnect...');
client.reconnect();
});
浏览器端使用
通过 CDN 引入或打包工具构建:

<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script>
const client = mqtt.connect('wss://broker.example.com');
// 其余逻辑与 Node.js 类似
</script>
注意事项
- 代理兼容性:确保代理支持 MQTT 3.1.1 或 5.0。
- WebSocket 支持:浏览器端需使用
wss://或ws://协议。 - QoS 级别:根据需求设置消息质量等级(0/1/2)。
通过以上方法,可以快速在 JavaScript 中集成 MQTT 功能。






