当前位置:   article > 正文

阿里云MQTT服务器搭建——连接MQTT.fx和Nodejs测试_阿里云mqtt.js

阿里云mqtt.js

使用MQTT协议需要搭建服务器,这里有两个方法,一个是使用各个厂商提供的云服务,另一个是自己搭建服务器,但自己搭建服务器需要花费较多的精力,因此本文章提供了一种便宜好用的云服务器搭建方法。
由于阿里云服务逻辑可能发生变化,本文章仅能保证从2023/12/25往后的较短一段时间内,配置方法相同。

为了验证服务器搭建是否成功,这里使用MQTT.fx软件进行测试,同时编写Nodejs代码连接阿里云MQTT服务器。
在这里插入图片描述

1 开通阿里云MQTT服务

1、进入阿里云官网,搜索:MQTT。
在这里插入图片描述
点击云消息队列MQTT版。

2、进入子页面,点击立即购买。
在这里插入图片描述
3、服务类型选择:
分为包年包月和流量付费,学生或者测试可以选择流量付费,价格便宜;企业内有长时间的MQTT服务器需求可以选择包年包月。在此处本文选择流量付费。
在这里插入图片描述
4、流量付费:可以看到该服务所提供的资源,对于测试和学习来说是绰绰有余,开通服务不需要付款,直接生成工单就好了。
注意地区选择靠自己所在城市较近的区域,我这里选择“华东2(上海)”。
在这里插入图片描述
5、进入控制台,需要开通微消息队列MQTT版,点击“免费开通”。
在这里插入图片描述
同意服务协议,点击立即开通。
在这里插入图片描述

6、等待1-10分钟,刷新一下网页就可以看到服务已经开通。
在这里插入图片描述

7、点击“实例列表”,并修改到前面服务所选择的区域,否则你找不到刚刚开通的服务。

在这里插入图片描述

2 MQTT实例配置

8、点击服务,进入配置页面。
在这里插入图片描述
9、新建Topic:点击“Topic管理”,“创建Topic”,随便写个主题名。
在这里插入图片描述

10、新建组(Group):点击“Group管理”,“创建Group”,Group ID随便写,这里设置为“GID_MQTT_TEST”。
注意:后面MQTT.fx的Client ID都要基于这个Group ID,后面添加@@@和编号。
在这里插入图片描述

11、获取AccessKey:将鼠标放到界面右上角的头像处,点击AccessKey管理。
在这里插入图片描述

生成AccessKey ID和AccessKey Secret,必须自己保存好
在这里插入图片描述

3 MQTT.fx配置

打开MQTT.fx。
点击小齿轮进入配置界面。
在这里插入图片描述

点击左下角的“+”号。
在这里插入图片描述
然后填写

名称内容
Profile Name随便写,这个是给自己看的
Profile TypeMQTT Broker
Broker Address你的实例名称.mqtt.aliyuncs.com
Broker Port1883
Client ID组名称@@@001 (@@@后面的编号不同设备不可以一样)
General如图所示,跟我图里一样就好。
User Credentials这里需要回到阿里云的控制台进行设置!

在这里插入图片描述

4 阿里云控制台——用户名和密码设置

1、生成用户名和密码:进入“签名校验”,输入刚刚MQTT.fx的Client ID,并将之前生成的AccessKey ID和AccessKey Secret复制进来,点击计算签名。
在这里插入图片描述

2、回到MQTT.fx:将得到的用户名(User Name)和密码(Password)复制进MQTT.fx的配置界面。
在这里插入图片描述
点击Apply保存。

5 连接服务器、订阅主题、发送消息

1、点击Connect连接服务器:
在这里插入图片描述
如果右侧显示绿色,说明连接成功。
在这里插入图片描述

2、订阅主题:点击“Subscribe”,在下方文本框内输入之前设置的主题名,点击右侧的“Subscribe”按钮。
在这里插入图片描述
可以发现下方多出来了一行主题,说明订阅成功了。
在这里插入图片描述
3、查看阿里云控制台
点击设备状态查询,选择Group ID,输入Device ID查询就可以看到MQTT.fx已经成功订阅了Topic。
在这里插入图片描述

4、发送数据:
使用MQTT.fx在“HappyChristmas”主题下发送数据。
在这里插入图片描述

5、接收到订阅主题下的数据:
可以看到订阅端也可以看到该数据。
在这里插入图片描述

实验验证成功。

6 Nodejs使用mqtt库连接阿里云服务器

6.1 安装nodejs

6.2 构建项目

命令行输入:

npm init

输入项目名,自动化生成项目列表。

6.3 编写代码

新建mqtt_demo_aliyun.js,代码如下:

// mqtt_demo_aliyun.js

const mqtt = require("mqtt");
const connectUrl = "ws://post-cn-nw**********.mqtt.aliyuncs.com";

const topic = "HappyChristmas";

const client = mqtt.connect(connectUrl, {
    username:"Signature|LTA*******************|post-cn-nw********" ,
    password:"MIRclbgDq*******************",
    clientId:"GID_MQTT_TEST@@@002",
});

// 成功连接后触发的回调
client.on('connect', () => {
	console.log('已经连接成功');
	// 订阅主题,这里可以订阅多个主题
	client.subscribe(topic, () => {
		console.log(`订阅了主题 ${topic}`);
	})
});

client.on('message', function (topic, message, packet) {
	// 这里有可能拿到的数据格式是Uint8Array格式,可以直接用toString转成字符串
	console.log("获取到的数据:", message.toString());
	console.log("数据对应订阅主题:", topic);
});

var Timer = setInterval(() => {
    client.publish(topic, 'hello,this is nodejs');
}, 3000);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

6.4 运行程序

命令行输入:

node mqtt_demo_aliyun.js

可以获取如下反馈:

已经连接成功
订阅了主题 HappyChristmas
获取到的数据: hello,this is nodejs
数据对应订阅主题: HappyChristmas
获取到的数据: hello,this is nodejs

查看阿里云控制台:

在这里插入图片描述

使用Mqtt.fx在HappyChristmas主题下发送mqttfx,Nodejs获取到的数据如下:

数据对应订阅主题: HappyChristmas
获取到的数据: mqttfx

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/218151
推荐阅读
相关标签
  

闽ICP备14008679号