Node.js MQTT SSL脚本
我创建了一个脚本,将我的Linux CentOS VM作为客户端连接到MQTT代理。现在我正在尝试使用SSL进行连接。要发布和订阅代理,需要用户名和密码。但是当我使用以下命令运行脚本时:
node websitemqttclient.js
user [bin]# node websitemqttclient.js
(node:30037) [DEP0123] DeprecationWarning: Setting the TLS ServerName to an IP address is not permitted by RFC 6066. This will be ignored in a future version.
connected false
我的脚本是否实际连接到我的代理,或者它只是停留在循环中而没有连接到代理?
主代码:
/////////////////////////////////////////////////////////////////////////////////////////
//setup
var mqtt = require('mqtt'); //for client use
const fs = require('fs');
var count =0; //connected to an end script function
var caFile = fs.readFileSync("/pathway/bin/ca.crt");
var options={
host:'brokerip',
port:8883,
clientId:"yo",
username:"user",
password:"password",
protocol: 'mqtts',
clean:true,
rejectUnauthorized: false,
retain:false,
ca:caFile
}
var client = mqtt.connect(options);
/////////////////////////////////////////////////////////////////////////////////////////
//connection dialog
//handle incoming messages
client.on('message',function(topic, message, packet){
console.log("message is "+ message);
console.log("topic is "+ topic);
});
client.on("connect",function(){
console.log("connected "+ client.connected);
})
//handle errors
client.on("error",function(error){
console.log("Can't connect" + error);
process.exit(1)});
/////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////
count+=1; //quit script after the execution of two loops
if (count==2) //ens script
clearTimeout(timer_id); //stop timer
client.end();
解决方案
client.connected
在完成Onconnect
事件处理程序之前不会返回true
。
将对client.subscribe()
的调用添加到Onconnect
事件处理程序,这样您实际上就有一些消息可以触发Onmessage
事件处理程序
相关文章