【发布时间】:2019-08-03 14:51:41
【问题描述】:
我在一个 React Native 移动应用上工作。我使用MQTT.js 与经纪人建立连接。作为第一个测试,我与Mosquitto public broker 建立了联系。我设法只连接了 WebSockets 端口(8080 和 8081)。不幸的是,与我的 localhost Mosquitto 代理的连接失败且没有错误。
首先,我在我的 Linux 计算机上安装了 Mosquitto 和 Node-RED。我分别从$ mosquitto -v 和$ node-red 开始。在 Node-RED 上,我创建了我的第一个流:inject node 连接到 mqtt publisher,mqtt subscriber 连接到 debug node。 mqtt 发布者和订阅者在同一个主题上,并成功连接到我的 Mosquitto localhost 代理。我部署了:它有效。
如果我尝试连接我的 React 应用:
let mqtt = require('mqtt')
let client = mqtt.connect('mqtt://localhost:1883')
console.log('client', client)
client.on('connect', function () {
console.log('connected')
})
client.on('error', function (error) {
console.log('error', error)
})
它运行但我的 Mosquitto 代理没有收到任何新连接。 console.log('client', client) 回复这个:
'client',
{ options:
{ protocol: 'ws',
slashes: true,
auth: null,
host: 'localhost:1883',
port: 1883,
...
}
}
protocol: 'ws' 代表 WebSockets,但我的 Mosquitto 代理是基于 IP 协议的,所以我在 /etc/mosquitto/conf.d 文件夹中创建了一个 protocol.conf 并写入 protocol websockets 行。然后当我重新启动 Mosquitto $ mosquitto -v -c /etc/mosquitto/conf.d/protocol.conf 它显示:
mosquitto version 1.6.4 starting
Config loaded from /etc/mosquitto/conf.d/protocol.conf.
Opening websockets listen socket on port 1883.
我重新编译了我的 React 应用程序:不起作用。
除非console.log('client', client)我的日志是空的,否则任何错误。
我预计至少会出现连接错误,但即使是 Mosquitto 代理也不会收到连接尝试。
【问题讨论】:
标签: javascript reactjs websocket mqtt mosquitto