当前位置:首页 > JavaScript

MQTT js实现

2026-02-01 10:16:17JavaScript

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.js 连接到 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.on('connect', () => {
  // 订阅主题
  client.subscribe('test/topic', (err) => {
    if (!err) {
      console.log('Subscribed to test/topic');
    }
  });
});

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

发布消息

向指定主题发布消息:

client.on('connect', () => {
  // 发布消息
  client.publish('test/topic', 'Hello MQTT', (err) => {
    if (!err) {
      console.log('Message published');
    }
  });
});

断开连接

手动断开与 MQTT 代理的连接:

client.end(); // 断开连接

使用 SSL/TLS 连接

如果需要通过 SSL/TLS 加密连接,可以配置证书和密钥:

const fs = require('fs');
const mqtt = require('mqtt');

const options = {
  key: fs.readFileSync('path/to/client-key.pem'),
  cert: fs.readFileSync('path/to/client-cert.pem'),
  ca: fs.readFileSync('path/to/ca-cert.pem'),
};

const client = mqtt.connect('mqtts://secure-broker.example.com', options);

高级配置

MQTT.js 支持多种配置选项,例如设置客户端 ID、用户名、密码等:

const options = {
  clientId: 'my-client-id',
  username: 'username',
  password: 'password',
  clean: true, // 是否清除会话
  keepalive: 60, // 心跳间隔(秒)
};

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

错误处理

监听和处理连接及消息传输中的错误:

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

client.on('offline', () => {
  console.log('Client is offline');
});

client.on('reconnect', () => {
  console.log('Reconnecting...');
});

完整示例

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

MQTT js实现

const mqtt = require('mqtt');

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

client.on('connect', () => {
  console.log('Connected to broker');

  // 订阅主题
  client.subscribe('test/topic', (err) => {
    if (!err) {
      console.log('Subscribed to test/topic');
      // 发布消息
      client.publish('test/topic', 'Hello MQTT');
    }
  });
});

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

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

// 5 秒后断开连接
setTimeout(() => {
  client.end();
  console.log('Disconnected');
}, 5000);

通过以上方法,可以快速实现基于 MQTT.js 的 MQTT 通信功能。

标签: MQTTjs
分享给朋友:

相关文章

js实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js防抖和节流实现

js防抖和节流实现

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

js实现求导

js实现求导

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

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现vue路由

js实现vue路由

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

js实现弹框

js实现弹框

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