当前位置:首页 > 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
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document…

js 实现链表

js 实现链表

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

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、…