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

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与响应式…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…

js图片上传实现

js图片上传实现

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