当前位置:首页 > JavaScript

js实现mqtt

2026-03-14 02:03:59JavaScript

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 引入或打包工具构建:

js实现mqtt

<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 功能。

标签: jsmqtt
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…