当前位置:首页 > 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实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现百叶窗

js实现百叶窗

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

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…