You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
2.1 KiB
Markdown

2 years ago
---
icon: edit
date: 2022-12-26
category:
- nodejs
tag:
- mqtt
headerDepth: 5
---
# nodejs 运行 mqtt
npm 安装 mqtt
```shell
npm install -g mqtt
```
客户端
```js
var mqtt = require('mqtt');
//var process = require('process');
var client = mqtt.connect('mqtt://192.168.3.254:1883', {
username: "admin",
password: "public",
clientId: 'client9'
});
function getYYYYMMDDhhmmssByDate() {
let date = new Date();
let value = date.getFullYear() * 10000000000 +
(date.getMonth() + 1) * 100000000 +
date.getDate() * 1000000 +
date.getHours() * 10000 +
date.getMinutes() * 100 +
date.getSeconds();
return value;
};
client.on('connect', function() {
console.log("connect success");
client.subscribe('/server/task/roleId/1/update_task_data');
client.subscribe('/server/task/roleId/1/setValue');
});
client.on('message', function(topic, message, packet) {
console.log(" ");
console.log(process.env.JAVA_HOME);
console.log("time: ", getYYYYMMDDhhmmssByDate());
var jsonStr = message.toString()
console.log("jsonStr: " + jsonStr);
console.log(" ");
});
```
服务端
```js
var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://192.168.3.254:1883', {
username: 'admin',
password: 'public',
clientId: 'server1'
});
function getJsonStr() {
return JSON.stringify({
"event": "update_task_data",
"data": {
"arrTaskId": [],
"arrTaskInst": [{
"id": 1,
"roleId": 1,
"moduleId": "0",
"userId": 0,
"taskId": 9999,
"finish": 0,
"taskNodeId": 15,
"taskNodeStatus": 0,
"taskNodeStartTime": 20210811,
"beforeNodeId": 14
}]
},
"open": (Math.round(Math.random())+1)*10,
"state": (Math.round(Math.random())+1)*10,
});
}
// 推送的频道和数据
setInterval(() => {
client.publish("/server/task/roleId/1/update_task_data", getJsonStr(), {qos: 2, retain: false});
}, 5000)
```