2

我在支持 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 仍然无法工作。

4

1 回答 1

1

在咨询了 VPS 的服务商之后,我确定我的代码和代理都没有问题。就像@hardillb 所说,这是服务器上的防火墙问题。服务提供者阻塞了所有的HTTP传输,所以客户端无法与服务端建立websocket连接。

于 2015-05-15T01:32:12.977 回答