我正在测试mqtt broker
。我有1000个客户。这1000个客户端在2秒内发布了一条消息,这意味着在2秒内将发布1000条消息。但是当我使用setInterval
时,不会发布1000条消息。几乎有一半的消息将被发布,而当我发布时没有setInterval
时,所有消息都会被传递。
这是由于我的nodejs代码引起的,但是我无法理解到底发生了什么。我正在使用emqtt经纪人。
这是我的代码:
publish.js
var mqtt = require('mqtt')
var client = [];
for (let index = 0; index < 1000; index++) {
client[index] = mqtt.connect('mqtt://localhost:1883',{qos:2})
}
setInterval(function () {
for (let index = 0; index < 1000; index++) {
var payload = JSON.stringify({
id:index,
timestamp:Date.now()
});
client[index].publish("drivers", payload,{qos:2},function(err){
if(err){
console.log("There is an error in publishing ",err);
}
});
}
}, 2000)
Subscriber.js
var client2 = mqtt.connect('mqtt://localhost:1883',{qos:2});
var fs = require('fs');
client2.subscribe("drivers", {
qos: 2
});
client2.on("message", function (topic, payload) {
payload = JSON.parse(payload.toString());
fs.appendFile('drivers', payload.id+"\n", function (err) {
if (err) throw err;
console.log('Saved!');
});
})
这段代码是怎么回事?
谢谢