如何通过Web套接字连接到Raspberry Pi上的Mosquitto代理?

时间:2016-05-09 09:18:48

标签: javascript raspberry-pi mqtt

我正在尝试连接到安装了Mosquitto代理的Raspberry Pi。 RPi上的客户端使用以下方式连接:

client.connect("127.0.0.1", 1883, 60)

我尝试使用以下规范在我的MQTT JavaScript客户端上连接它,但我失败了:

client = new Paho.MQTT.Client("10.101.125.190", 1883,"myclientid_" + parseInt(Math.random() * 100, 10)); 

我也尝试从JavaScript端将端口更改为8080,但我仍然失败了。如果我将端口更改为RPi上的8080,则它甚至无法连接。

这是我目前得到的错误:

WebSocket connection to 'ws://10.101.125.190:1883/mqtt' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

那么,我需要更改什么来修复此错误? RPi和我的JS客户端都在同一个本地网络中。

修改: 我忘了提到我已经用test.mosquitto.org - 8080尝试了这个并且它有效,但是一旦我更改了地址,我就开始收到错误。

1 个答案:

答案 0 :(得分:1)

基于websockets的MQTT与本机MQTT不共享相同的端口。

您需要在mosquitto配置中添加一个新的监听器。

您需要在/etc/mosquitto/mosquitto.conf的末尾添加以下内容(或在/etc/mosquitto/mosquitto.d中的单独文件中)

listener 1884
protocol websockets

然后需要更新您的JavaScript以连接到端口1884而不是1883

你还需要使用比1.4.x更新的mosquitto版本iirc,为raspbian打包的默认版本太旧了。按照here说明获取更新版本。