Node.js Can';t连接到aedes MQTT代理
我有一个MQTT代理和我的MQTT客户机,但我似乎无法连接它们 在我的Node.js Can';t连接到aedes MQTT代理,node.js,mqtt,aedes,Node.js,Mqtt,Aedes,我有一个MQTT代理和我的MQTT客户机,但我似乎无法连接它们 在我的app.js中,我执行以下操作: (async function () { try { await startBroker(); await mqttClient(); } catch (e) { console.error("ERROR: ", e); process.exit(); } })(); 我的startBroker函数启动aedes并按如下方式流式处理: const
app.js
中,我执行以下操作:
(async function () {
try {
await startBroker();
await mqttClient();
} catch (e) {
console.error("ERROR: ", e);
process.exit();
}
})();
我的startBroker函数启动aedes并按如下方式流式处理:
const aedes = require('aedes')();
const server = require('net').createServer(aedes.handle);
const port = 1883;
exports.startBroker = function() {
return new Promise((res, rej) => {
server.listen(port, function () {
console.log(`MQTT Broker started on port ${port}`);
return res()
});
})
};
然后我的mqttClient
尝试连接,但我永远无法真正连接。我已经在测试mosquitto服务器上对其进行了测试,该服务器运行良好
const mqtt = require('mqtt');
const client = mqtt.connect("mqtt://localhost:1883");
exports.mqttClient = function() {
console.log("Connecting to MQTT Client");
client.on("connect", ack => {
console.log("MQTT Client Connected!");
client.on("message", (topic, message) => {
console.log(`MQTT Client Message. Topic: ${topic}. Message: ${message.toString()}`);
});
});
client.on("error", err => {
console.log(err);
});
}
有人知道为什么我的经纪人似乎不起作用吗?你能澄清一下,经纪人是如何不起作用的,以及实际上起作用的是什么吗在哪里和如何运行代码
当我将代码放入单个文件(将导出。
更改为常量
)时,它确实起作用。我必须在mqttClient
的函数声明后添加分号,但之后,我得到以下控制台输出:
MQTT代理已在端口1883上启动连接到MQTT客户端
MQTT客户端已连接 这是可以立即复制的完整代码。它在macOS 10.15 Catalina上的Node.js v12.15.0中运行
const aedes=require('aedes')();
const server=require('net').createServer(aedes.handle);
常数端口=1883;
//exports.startBroker=函数(){
常量startBroker=函数(){
返回新承诺((res,rej)=>{
侦听(端口、函数(){
log(`MQTT代理在端口${port}`上启动);
返回res()
});
})
};
常量mqtt=require('mqtt');
const client=mqtt.connect(“mqtt://localhost:1883");
//exports.mqttClient=函数(){
常量mqttClient=函数(){
log(“连接到MQTT客户机”);
client.on(“connect”,ack=>{
log(“MQTT客户端已连接!”);
client.on(“消息”,(主题,消息)=>{
log(`MQTT Client Message.Topic:${Topic}.Message:${Message.toString()}`);
});
});
client.on(“error”,err=>{
控制台日志(err);
});
}; //