无法通过websockets连接到Mosquitto

时间:2015-05-13 07:32:57

标签: linux node.js websocket mqtt mosquitto

我在Linux上安装了最新的Mosquitto MQTT代理,支持websokets,我编辑配置文件为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似乎不起作用,但没有显示错误在任何一方。

可能导致问题的原因是什么?

THX。

更新

我尝试在代理所在的服务器上运行程序,使用ws://127.0.0.1:1884作为目标,然后连接。但是从一台远程机器,比如说我的笔记本电脑或其他服务器,webokcets仍然无法正常工作。

1 个答案:

答案 0 :(得分:1)

在咨询VPS的服务提供商后,我确信我的代码或代理没有任何问题。就像@hardillb所说,这是服务器上的防火墙问题。服务提供商阻止了所有HTTP传输,因此客户端无法与服务器建立websocket连接。