1、新建文件夹 mqtt_pure
,建立 mqtt.js
文件;
2、在 VSCode 中打开,新开一个 终端;
3、终端中输入 npm install mqtt --save
4、写入代码:
const mqtt = require('mqtt')
const options = {
// Clean session
clean: true,
connectTimeout: 4000,
// Auth
clientId: 'emqx_test_lzl_mqttjs',
username: 'emqx_test',
password: 'emqx_test',
}
// 确保TCP Port 端口正确
const client = mqtt.connect('mqtt://broker.emqx.io:1883', options)
client.on('connect', function () {
console.log('Connected')
// 订阅到主题后,只触发一次。
client.subscribe('testtopic/lzl-MQTTX', function (err) {
if (!err) {
console.log("subscribe success!!!!")
//发布主题testtopic/lzl-mqttjs
client.publish('testtopic/lzl-mqttjs', 'Hello, 我是mqttjs客户端消息。通过主题【testtopic/lzl-mqttjs】发布而来。 from: client.subscribe')
}
})
}),
// 只要接收到客户端消息,就会触发。
client.on('message', function (topic, message) {
console.log(message.toString())
client.publish('testtopic/lzl-mqttjs', 'Hello, 我是mqttjs客户端消息。 通过主题【testtopic/lzl-mqttjs】发布而来。from: client.on')
}),
client.on('close', function () {
console.log('Disconnected');
console.log('-------------------')
})
node mqtt.js
运行代码。(1)两个客户端(mqtt.js MQTTX)连接到同一个服务器。
(2)clientID:全局唯一。如果不同的设备使用相同的clientID同时连接物联网平台,那么先连接的那个设备会被强制断开。
(3)【MQTTX 客户端】的 clientID
,和【mqtt.js客户端】的 clientID
不能相同,服务器连接的客户端clientID必须唯一,不然就会挤掉其他的客户端。
clientID:emqx_test_lzl_MQTTX
。clientId: 'emqx_test_lzl_mqttjs'
1、运行node mqtt.js
,在【mqttx.js 客户端】订阅 【MQTTX客户端】的消息:
2、命令行订阅消息
mqtt sub -t 'testtopic/#' -h 'broker.emqx.io' -v // 连接到 broker.emqx.io 并订阅 testtopic/# 主题;
注释:
1、testtopic/# 代表【mqtt.js客户端】订阅所有testtopic/话题下的内容。
2、testtopic/lzl-MQTTX 代表【mqtt.js客户端】只接收我的【MQTTX客户端】发布的话题内容。