我在支持 websockets 的 Linux 上安装了最新的 Mosquitto MQTT 代理,并编辑了配置文件以添加 websockets 的侦听器。
我将这些行添加到配置文件中:
listener 1883
protocol mqtt
listener 1884
protocol websockets
当我跑步时
sudo /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
代理启动,控制台中的一行显示
Opening websockets listen socket on port 1884.
并且没有进一步的错误。我认为 websocket 侦听器应该启动并运行。当我在 Node.js 中使用 mqtt.js 测试代理时,mqtt 运行良好,但我无法通过 websockets 连接到代理。
JS代码:
var wsClient = mqtt.connect('ws://my.server.address:1884')
wsClient.on('connect', function(){
console.log('ws connected')
})
wsClient.on('error', function(err) {
console.log(err)
})
运行 JS 代码后,我没有看到任何错误或连接消息。代理也没有显示任何关于 ws 连接的消息。
奇怪的是,我在另一个 Ubuntu 系统上运行了这整件事,但是在这个 Red Hat 系统上,只有 mqtt 连接在工作,ws 似乎没有工作,但两边都没有显示错误。
什么可能导致问题?
谢谢。
更新
我尝试在代理所在的服务器上运行该程序,ws://127.0.0.1:1884
用作目标,并且它已连接。但是在远程机器上,比如我的笔记本电脑或其他服务器,websokcets 仍然无法工作。