使用Node.js连接和发布/订阅MQTT消息

这篇具有很好参考价值的文章主要介绍了使用Node.js连接和发布/订阅MQTT消息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Node.js是一种基于事件驱动的异步I/O服务器端JavaScript运行环境,因为其非阻塞I/O和事件驱动模型,使得它非常适合处理大量并发请求的场景。MQTT是一种轻量级的消息传递协议,它是基于发布/订阅模式的,适用于传输小量数据,且具有低带宽、低电量消耗和可靠性高等特点。这篇文章将介绍如何使用Node.js和MQTT客户端库来连接和发布/订阅MQTT消息。

一、安装MQTT客户端库

在Node.js中使用MQTT客户端库,需要先安装它。在命令行中输入以下命令即可安装MQTT客户端库:

npm install mqtt

二、引入MQTT客户端库

在使用MQTT客户端库之前,需要先引入它。在Node.js脚本中,可以使用以下代码来引入MQTT客户端库:

var mqtt = require('mqtt')

三、连接MQTT代理

在Node.js中使用MQTT客户端库连接MQTT代理需要使用mqtt.connect()方法。该方法的第一个参数是MQTT代理的地址,可以是IP地址或者域名,第二个参数是连接选项。

var client = mqtt.connect('mqtt://localhost:1883', {
    clientId: 'nodejs-mqtt-client'
})

其中,'mqtt://localhost:1883'是MQTT代理的地址,端口号为1883,'nodejs-mqtt-client'是客户端ID。

四、发布MQTT消息

在Node.js中,使用MQTT客户端库发布MQTT消息需要使用client.publish()方法。该方法的第一个参数是消息主题,第二个参数是消息内容,第三个参数是选项。

client.publish('topic', 'hello mqtt', {
    qos: 1
})

其中,'topic'是消息主题,{qos: 1}是选项,表示消息订阅的QoS级别为1。

六、接收MQTT消息

在Node.js中,使用MQTT客户端库接收MQTT消息需要使用client.on('message', callback)方法。该方法的第一个参数是'message',表示监听MQTT消息,第二个参数是回调函数,用来处理收到的MQTT消息。

client.on('message', function (topic, message) {
    console.log('Received message:', topic, message.toString())
})

其中,'topic'是消息主题,message是消息内容,toString()方法将消息内容转化为字符串类型。当客户端接收到MQTT消息时,就会触发该回调函数。

七、断开MQTT连接

在Node.js中,使用MQTT客户端库断开MQTT连接需要使用client.end()方法。

八、完整示例

下面是一个完整的Node.js和MQTT客户端库的示例:

var mqtt = require('mqtt')

var client = mqtt.connect('mqtt://localhost:1883', {
    clientId: 'nodejs-mqtt-client'
})

client.on('connect', function () {
    console.log('Connected to MQTT broker')
    client.subscribe('topic', {
        qos: 1
    })
})

client.on('message', function (topic, message) {
    console.log('Received message:', topic, message.toString())
})

client.publish('topic', 'hello mqtt', {
    qos: 1
})

client.end()

在该示例中,首先使用mqtt.connect()方法连接MQTT代理,然后使用client.on('connect', callback)方法监听连接事件,当连接成功时,使用client.subscribe()方法订阅MQTT消息。接着使用client.publish()方法发布MQTT消息,然后使用client.end()方法断开MQTT连接。当客户端接收到MQTT消息时,就会触发client.on('message', callback)方法中的回调函数。

在实际应用中,我们需要注意以下几点:

  1. 连接MQTT代理的地址和端口号应与实际情况相符。

  2. 发布/订阅MQTT消息时,需要使用正确的主题名称和消息质量等级。主题名称应符合MQTT协议规范,并且应具有一定的语义意义,以方便消息的识别和处理。消息质量等级应根据具体情况选择,例如,如果要确保消息的可靠性,可以选择QoS级别为1或2。

  3. 在实际应用中,MQTT代理通常需要进行身份验证和授权,以确保消息的安全性和可靠性。因此,在连接MQTT代理时,应使用正确的用户名和密码等信息进行身份验证,并且应使用正确的ACL规则进行授权。

  4. 在使用MQTT协议进行通信时,需要注意消息的大小和频率等问题。MQTT协议最大支持256MB大小的消息,但在实际应用中,应尽可能使用较小的消息以减小网络带宽和存储压力。此外,应避免频繁发送消息,以减少网络负载和能源消耗。

  5. 在使用MQTT协议进行通信时,需要注意消息的格式和编码方式。MQTT协议支持多种数据格式和编码方式,例如,JSON、XML、二进制等。在实际应用中,应根据具体情况选择合适的数据格式和编码方式。

总的来说,在Node.js中使用MQTT客户端库进行MQTT通信非常方便和灵活。如果您需要进行物联网或其他领域的小量数据通信,建议您选择MQTT协议和Node.js MQTT客户端库进行开发。

总结

在Node.js中使用MQTT客户端库连接和发布/订阅MQTT消息非常简单,只需要按照上述步骤即可。使用MQTT协议可以方便地在不同的设备之间传输小量数据,因此在物联网等领域应用广泛。文章来源地址https://www.toymoban.com/news/detail-741145.html

到了这里,关于使用Node.js连接和发布/订阅MQTT消息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布&MQTT 客户端重连

    简介: 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT? 之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用

    2024年02月05日
    浏览(29)
  • 从零开始用Nodejs搭建一个MQTT服务器,并且用stm32通过esp8266进行消息订阅和发布

    最近在做一个物联网项目,需要用到服务器进行数据的存储和数据的请求和发送,之前我用过onenet平台上的http服务,虽然能通过get和post请求进行数据的提交和发送,但是平台上的数据发生改变却不能主动推送给esp8266,与我此次的项目不符合,所以pass。然后我了解了下mqtt协

    2024年02月04日
    浏览(40)
  • RuoYi-Vue前后端分离搭建MQTT服务器实现消息订阅、发布、数据存储 (EMQX Windows10)最全,懒人操作

    1、在RuoYi-Vue项目的superVisualizationSys-common模块下的pom.xml加入jar包依赖 3、在superVisualizationSys-commonsrcmainjavacomsuperVisualizationcommonutils目录下新建mqtt文件夹,添加以下三个文件 注:项目报红的地方可以按Alt+Enter键导包 下载路径: https://www.emqx.io/zh/download   1. 在windows上安装

    2024年02月15日
    浏览(44)
  • 【Python】Flask + MQTT 实现消息订阅发布

    本次项目主要使用到的库: flask_mqtt 1.创建Flask项目 2创建py文件: mqtt_demo.py 3.代码实现 4.项目运行 运行项目前可在Pycharm中设置 host 和 port 设置好后直接运行项目 使用 MQTTX 进行消息测试 1、测试消息接收 创建连接 Host :为代码中定义好的 broker.emqx.io Port :为代码中定义好的

    2024年02月04日
    浏览(31)
  • 【Ubuntu搭建MQTT Broker及面板+发布消息、订阅主题】

    根据自己的服务器是否开始了防火墙放行端口(18083 默认面板端口) 访问:域名:18083 用户名是admin,初始密码是public。登陆后需要立即修改密码,还可以新增用户 至此搭建完成,我们使用本地的进行发布订阅测试 最后一个免费版本下载点击链接下载 https://newbie-typora.oss-cn-

    2024年02月09日
    浏览(26)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第1节-阿里云配置+MQTT.fx模拟与使用AT命令发布订阅消息

    🌟博主领域:嵌入式领域人工智能软件开发 本节目标: 通过MQTT.fx模拟连接或通过串口连接ESP8266发送AT命令,实现阿里云物联网平台发送数据同时接收数据,IOT studio界面显示数据。具体来说:使用ESP8266 ESP-01来连接网络,获取设备数据发送到阿里云物联网平台并显示且oled显

    2024年02月03日
    浏览(36)
  • MQTT记录(概述,docker部署,基于spring-integration-mqtt实现消息订阅与发布,客户端工具测试)

    需要spring-boot集成spring-integration-mqtt代码的直接跳到第5部分 1.1 MQTT是什么呢? message queue telemetry translation 是一种基于发布与订阅的轻量级消息传输协议.适用于低带宽或网络不稳定的物联网应用.开发者可以使用极少的代码来实现物联网设备之间的消息传输.mqtt协议广泛应用于物

    2024年02月12日
    浏览(36)
  • 【MQTT】基于阿里云物联网平台实现两设备间相互订阅及发布消息

    一、准备: 1.下载MQTT.fx - 1.7.1工具 https://www.jianshu.com/p/c9f50cf81cd2 2.进入物联网平台,并按照产品文档创建产品及设备 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 3.打开两个MQTT.fx工具,并分别填写相关设备信息,连接物联网平台(参考阿里云产品文档)。  二

    2024年02月02日
    浏览(43)
  • MQTT协议-发布消息(服务器向客户端发送)

    发布消息报文组成:https://blog.csdn.net/weixin_46251230/article/details/129414158 在了解了发布信息的PUBLISH报文后,就可以分析出阿里云服务器向本地客户端发送的报文数据了 实验前需要在阿里云创建产品和设备,并创建简单的温度和湿度物模型:https://blog.csdn.net/weixin_46251230/article/de

    2024年02月06日
    浏览(44)
  • 【MQTT协议】使用Mosquitto实现mqtt协议(二):编写视频帧的发布/订阅服务

    更多内容详见 【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译) MQTT协议中的QoS(Quality of Service)表示消息传输的服务质量等级,它是MQTT协议中非常重要的一个概念。 MQTT协议中定义了三个不同等级的QoS: QoS 0:最多一次(At most once)传输。消息发布者只发送一次消息,不

    2023年04月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包