当前位置:首页 > JavaScript

MQTT js实现

2026-03-14 08:52:31JavaScript

MQTT.js 实现

MQTT.js 是一个用于 Node.js 和浏览器的 MQTT 客户端库,支持 MQTT 3.1.1 和部分 MQTT 5.0 功能。以下是使用 MQTT.js 实现 MQTT 通信的详细方法。

安装 MQTT.js

通过 npm 或 yarn 安装 MQTT.js:

npm install mqtt
# 或
yarn add mqtt

连接到 MQTT 代理

创建一个客户端并连接到 MQTT 代理(如 Mosquitto、EMQX 或 HiveMQ):

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.error('Subscription error:', err);
  } else {
    console.log('Subscribed to topic/test');
  }
});

client.on('message', (topic, message) => {
  console.log(`Received message on ${topic}: ${message.toString()}`);
});

发布消息

向指定主题发布消息:

client.publish('topic/test', 'Hello MQTT', (err) => {
  if (err) {
    console.error('Publish error:', err);
  } else {
    console.log('Message published');
  }
});

断开连接

关闭客户端连接:

client.end();

使用 MQTT 5.0 功能

MQTT.js 支持部分 MQTT 5.0 功能,例如属性设置:

const client = mqtt.connect('mqtt://test.mosquitto.org', {
  protocolVersion: 5,
  properties: {
    sessionExpiryInterval: 3600, // 会话过期时间(秒)
  },
});

浏览器端使用

在浏览器中使用 MQTT.js 需要通过 CDN 或打包工具引入:

<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script>
  const client = mqtt.connect('wss://test.mosquitto.org:8081');
  client.on('connect', () => {
    console.log('Connected to MQTT broker');
  });
</script>

安全连接

配置 TLS/SSL 连接:

const fs = require('fs');
const client = mqtt.connect('mqtts://test.mosquitto.org', {
  key: fs.readFileSync('client-key.pem'),
  cert: fs.readFileSync('client-cert.pem'),
  ca: fs.readFileSync('server-ca.pem'),
});

断线重连

启用自动重连功能:

const client = mqtt.connect('mqtt://test.mosquitto.org', {
  reconnectPeriod: 5000, // 重连间隔(毫秒)
});

完整示例

以下是一个完整的 MQTT.js 示例,包含连接、订阅、发布和断开操作:

MQTT js实现

const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://test.mosquitto.org');

client.on('connect', () => {
  console.log('Connected to MQTT broker');
  client.subscribe('topic/test');
  client.publish('topic/test', 'Hello MQTT');
});

client.on('message', (topic, message) => {
  console.log(`Received message on ${topic}: ${message.toString()}`);
  client.end();
});

client.on('error', (err) => {
  console.error('Error:', err);
});

通过以上方法,可以快速实现 MQTT 通信功能。MQTT.js 的文档和示例可在其 GitHub 仓库 中找到更多细节。

标签: MQTTjs
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…