【发布时间】:2018-06-26 10:42:13
【问题描述】:
我正在尝试通过 websockets 和 paho javascript 客户端连接到本地 mosquitto mqqt 代理。但是,使用https://www.eclipse.org/paho/clients/js/ 中显示的示例会使我的网络连接崩溃。在 chrome 或 ie 控制台中,我发现了问题:一遍又一遍地建立连接(函数 onConnect 每秒被调用多次)。
client.connect({onSuccess:onConnect});
// called when the client connects
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("Connection was successful");
client.subscribe("World");
message = new Paho.MQTT.Message("Hello");
message.destinationName = "World";
client.send(message);
}
在代理上我可以看到客户端正在连接:
New client connected from 192.168.1.3 as web_78 (c1, k60, u'user123').
但是消息没有被客户端广播。当我终止浏览器时,我在客户端上看到:
Socket error on client web_78, disconnecting.
当我尝试不同的代码示例时,同样的事情发生了:https://jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/
我在我的 Raspberry Pi 上使用 mosquitto 1.5 版,我真的不知道如何让它运行。也许问题出在 mosquitto 服务器而不是客户端?
这是我定义端口的 mosquitto.conf 的一部分
listener 9001
protocol websockets
其他客户端可以连接(例如通过 paho python)和 mqtt(没有 websockets)。
pi@raspberrypi ~ $ sudo mosquitto -c /etc/mosquitto/mosquitto.conf
1530009485: mosquitto version 1.5 starting
1530009485: Config loaded from /etc/mosquitto/mosquitto.conf.
1530009485: Opening websockets listen socket on port 9001.
1530009485: Opening ipv4 listen socket on port 1883.
1530009485: Opening ipv6 listen socket on port 1883.
1530009485: New connection from 192.168.1.51 on port 1883.
1530009485: New client connected from 192.168.1.51 as DVES_9CE05F (c1, k15, u'johann').
任何帮助将不胜感激!
编辑更新:
问题一定出在我的服务器上,因为我可以访问像 HiveMQ 这样的公共代理。
【问题讨论】:
-
您是否使用未更改的 paho 示例(除了经纪人的地址)?
-
是的,只是改了ip地址和端口。
-
我刚刚在 x86_64 Ubuntu 上构建了 v1.5 源代码,并且运行正常。你的树莓派版本是从哪里得到的?
-
另外,您似乎编辑了示例以更改客户端 ID 并设置用户名和密码,请使用该代码更改更新问题。
标签: javascript mqtt mosquitto paho