当前位置:首页 > JavaScript

js实现mqtt

2026-02-01 03:48:12JavaScript

使用 JavaScript 实现 MQTT

MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅协议,适用于物联网(IoT)和实时通信场景。以下是使用 JavaScript 实现 MQTT 的几种方法。

安装 MQTT 客户端库

常用的 JavaScript MQTT 客户端库是 mqtt.js,可以通过 npm 安装:

npm install mqtt

连接到 MQTT 代理

以下代码展示了如何连接到 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);
});

发布消息

发布消息到指定主题:

js实现mqtt

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

订阅主题

订阅一个或多个主题并接收消息:

client.subscribe('topic/test', (err) => {
    if (err) {
        console.error('Subscribe error:', err);
    } else {
        console.log('Subscribed to topic/test');
    }
});

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

断开连接

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

js实现mqtt

client.end();

使用 WebSocket 连接

如果 MQTT 代理支持 WebSocket,可以通过以下方式连接:

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

安全连接(TLS/SSL)

如果需要加密连接,可以使用 mqtts:// 协议:

const client = mqtt.connect('mqtts://test.mosquitto.org', {
    rejectUnauthorized: false // 仅用于测试,生产环境应配置正确的证书
});

完整示例

以下是一个完整的发布和订阅示例:

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

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

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

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

注意事项

  • 确保 MQTT 代理地址和端口正确。
  • 在生产环境中使用 TLS/SSL 加密连接。
  • 处理连接错误和消息丢失的情况。
  • 避免频繁发布和订阅,以减少网络负载。

通过以上方法,可以轻松在 JavaScript 中实现 MQTT 的发布和订阅功能。

标签: jsmqtt
分享给朋友:

相关文章

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js实现弹框

js实现弹框

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

js实现截图

js实现截图

使用HTML2Canvas库实现截图 HTML2Canvas是一个流行的JavaScript库,可以将网页元素或整个页面转换为Canvas图像。安装方式: npm install html2canv…