我在node.js上使用此代码,而我的mqtt服务器是cloudmqtt。
mqtt脚本结果有问题。
我必须编写clientid并单击“清除会话”按钮。
如果我不这样做,消息将不会互相到达。
我尝试在npm软件包上找到“ mqtt”,但找不到能清除会话的内容。
您能教我如何发送消息吗?
******写入结果*****
λ节点test_cloudmqtt.js mqtt2已连接 mqtt1触发器称为0 mqtt1触发器称为1 mqtt1触发器称为2 mqtt1触发器称为3 mqtt1触发器称为4 mqtt1触发了5 mqtt1触发了6 mqtt1触发调用7 mqtt1触发器称为8 mqtt1触发器称为9 mqtt1已连接0 mqtt1已连接1 mqtt1已连接2 mqtt1已连接3 mqtt1已连接4 mqtt1已连接5 mqtt1已连接6 mqtt1已连接7 mqtt1已连接8 mqtt1已连接9 MSG:您好mqtt0 MSG:您好mqtt1 MSG:您好mqtt2 MSG:您好mqtt3 MSG:您好mqtt4 味精:你好mqtt5 味精:你好mqtt6 味精:你好mqtt7 味精:你好mqtt8 MSG:您好mqtt9
var client1 = mqtt.connect(cloudmqtt.mqttHost, {
port: cloudmqtt.MQTTPORT,
username: cloudmqtt.mqttMasterId,
password: cloudmqtt.mqttMasterPw});
function testmqtt(param) {
console.log("mqtt1 trigger called" + param.toString());
client1.on('connect', function () {
client1.publish('/kym_test', 'Hello mqtt' + param.toString());
console.log("mqtt1 connected" + param.toString());
/*client1.end(function () {
console.log("mqtt1 disconnect");
});*/
});
client1.on('error', function () {
console.log("mqtt1 error");
});
}
var client2 = mqtt.connect(cloudmqtt.mqttHost, {
port: cloudmqtt.MQTTPORT,
username: 'kym2',
password: 'xxxx'});
client2.on('connect', function () {
console.log("mqtt2 connected");
client2.subscribe('/kym_test');
});
client2.on('message', function (topic, message) {
console.log("MSG : " + message.toString());
});
for(var a=0; a < 10; a++) {
setTimeout(testmqtt, 1000, a); //
}
答案 0 :(得分:0)
从npm上的mqtt.js docs
- protocolId:“ MQTT”
- protocolVersion:4
- clean:true,设置为false以在脱机时接收QoS 1和2消息
- reconnectPeriod:1000毫秒,两次重新连接之间的间隔
- connectTimeout:30 * 1000毫秒,等待收到CONNACK的时间
- 用户名:您的经纪人所需的用户名(如果有)
var client1 = mqtt.connect(cloudmqtt.mqttHost, {
clean: false,
port: cloudmqtt.MQTTPORT,
username: cloudmqtt.mqttMasterId,
password: cloudmqtt.mqttMasterPw});