我得到了一个通过Java使用Paho / MQTT客户端来更新网页的项目。该项目通过localhost:8080上的python启动http服务器,然后在加载网页时,main.js脚本启动客户端并运行连接,如下所示:
var client = new Paho.MQTT.Client("localhost",Number(8080),'0');
client.onConnectionLost = onConLost;
client.onMessageArrived = onMesArvd;
console.log("start connection...");
client.connect({onSuccess: onConnect});
问题在于,尝试连接时出现以下错误,并且onConnect方法似乎未作为控制台连接。日志未出现:
WebSocket connection to 'ws://localhost:8080/mqtt' failed: Error during WebSocket handshake: Unexpected response code: 404
paho-mqtt.js中以红色突出显示的代码如下:
new WebSocket(a, ["mqtt"])
我尝试将mqtt文件添加到正在从其运行localhost的文件夹中,但是它只会更改响应代码(如果存在mqtt文件夹,则为301,如果存在文件,则为200)。
添加项目随附的mosquitto.conf:
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
listener 1883
listener 8080
protocol websockets
我注意到它与paho / mqtt客户端不在同一个文件夹中,而是在../dir2/setup/中。
我环顾四周,但是没有人遇到这个问题,因此任何帮助/指导将不胜感激。谢谢!
答案 0 :(得分:1)
感谢桑托什·巴拉吉(Santosh Balaji)在这个方向上为我指明了正确的方向。
我相信我需要在pi上install mosquitto,然后将mosquitto安装目录中的mosquitto.conf文件更改为项目提供的目录。在安装并确认我的conf被使用后,js和Python连接没有问题。
答案 1 :(得分:0)
1)在启动mqtt之前,端口8080是否被其他进程占用。尝试使用conf文件启动您的蚊子。如果开始有任何错误,它将显示错误。
mosquitto -c mosquitto.conf
2)尝试将端口更改为9001,因为它是在mqtt中使用websockets的默认端口