我正在尝试连接到安装了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
尝试了这个并且它有效,但是一旦我更改了地址,我就开始收到错误。
答案 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说明获取更新版本。