当前位置:首页 > 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实现图片轮播

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

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现tab选项卡切换

js实现tab选项卡切换

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

js实现菜单

js实现菜单

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

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…