【发布时间】:2019-01-22 08:20:45
【问题描述】:
我得到了一个项目,它通过 Javascript 使用 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 方法似乎没有连接,因为 console.log 没有出现:
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/ 中。
我环顾四周,但没有看到任何人遇到此问题,因此我们将不胜感激任何帮助/指导。谢谢!
【问题讨论】:
-
您确定您的 MQTT 代理已配置为侦听 websocket 连接吗?
-
可以发布代理配置吗?
-
贴出python代码,你展示的paho/JavaScript没有错
-
添加了我的 conf 文件的代码及其目录的详细信息。还提到 paho 服务器的 onConnect 方法似乎没有连接,因为没有出现 console.log 调用。
标签: javascript websocket mqtt paho