赞
踩
使用MQTT协议需要搭建服务器,这里有两个方法,一个是使用各个厂商提供的云服务,另一个是自己搭建服务器,但自己搭建服务器需要花费较多的精力,因此本文章提供了一种便宜好用的云服务器搭建方法。
由于阿里云服务逻辑可能发生变化,本文章仅能保证从2023/12/25往后的较短一段时间内,配置方法相同。
为了验证服务器搭建是否成功,这里使用MQTT.fx软件进行测试,同时编写Nodejs代码连接阿里云MQTT服务器。
1、进入阿里云官网,搜索:MQTT。
点击云消息队列MQTT版。
2、进入子页面,点击立即购买。
3、服务类型选择:
分为包年包月和流量付费,学生或者测试可以选择流量付费,价格便宜;企业内有长时间的MQTT服务器需求可以选择包年包月。在此处本文选择流量付费。
4、流量付费:可以看到该服务所提供的资源,对于测试和学习来说是绰绰有余,开通服务不需要付款,直接生成工单就好了。
注意地区选择靠自己所在城市较近的区域,我这里选择“华东2(上海)”。
5、进入控制台,需要开通微消息队列MQTT版,点击“免费开通”。
同意服务协议,点击立即开通。
6、等待1-10分钟,刷新一下网页就可以看到服务已经开通。
7、点击“实例列表”,并修改到前面服务所选择的区域,否则你找不到刚刚开通的服务。
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,必须自己保存好。
打开MQTT.fx。
点击小齿轮进入配置界面。
点击左下角的“+”号。
然后填写
名称 | 内容 |
---|---|
Profile Name | 随便写,这个是给自己看的 |
Profile Type | MQTT Broker |
Broker Address | 你的实例名称.mqtt.aliyuncs.com |
Broker Port | 1883 |
Client ID | 组名称@@@001 (@@@后面的编号不同设备不可以一样) |
General | 如图所示,跟我图里一样就好。 |
User Credentials | 这里需要回到阿里云的控制台进行设置! |
1、生成用户名和密码:进入“签名校验”,输入刚刚MQTT.fx的Client ID,并将之前生成的AccessKey ID和AccessKey Secret复制进来,点击计算签名。
2、回到MQTT.fx:将得到的用户名(User Name)和密码(Password)复制进MQTT.fx的配置界面。
点击Apply保存。
1、点击Connect连接服务器:
如果右侧显示绿色,说明连接成功。
2、订阅主题:点击“Subscribe”,在下方文本框内输入之前设置的主题名,点击右侧的“Subscribe”按钮。
可以发现下方多出来了一行主题,说明订阅成功了。
3、查看阿里云控制台
点击设备状态查询,选择Group ID,输入Device ID查询就可以看到MQTT.fx已经成功订阅了Topic。
4、发送数据:
使用MQTT.fx在“HappyChristmas”主题下发送数据。
5、接收到订阅主题下的数据:
可以看到订阅端也可以看到该数据。
实验验证成功。
略
命令行输入:
npm init
输入项目名,自动化生成项目列表。
新建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);
命令行输入:
node mqtt_demo_aliyun.js
可以获取如下反馈:
已经连接成功
订阅了主题 HappyChristmas
获取到的数据: hello,this is nodejs
数据对应订阅主题: HappyChristmas
获取到的数据: hello,this is nodejs
查看阿里云控制台:
使用Mqtt.fx在HappyChristmas主题下发送mqttfx,Nodejs获取到的数据如下:
数据对应订阅主题: HappyChristmas
获取到的数据: mqttfx
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。