我尝试让 MQTT JavaScript 客户端运行。它基于 Eclipse Paho 客户端库 (org.eclipse.paho.mqtt.javascript.git)。
在运行 JavaScript 客户端之前,我正在执行一些测试
- mosquitto_pub -h test.mosquitto.org -t "/topic1" -m "test"
和
- mosquitto_sub -h test.mosquitto.org -t "/topic1" -v
哪些工作正常。
然后我调用了我自己的 mqttTest.html,其中包含:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/JavaScript" src="mqttws31.js"></script>
<script type="text/JavaScript">
var client;
function doConnect() {
client = new Messaging.Client("test.mosquitto.org", 1883, "mosqOtti");
console.log("Client instantiated.");
client.startTrace();
console.log("Now trying to connect...");
client.connect({onSuccess:onConnect});
}
function onConnect() {
console.log("connection established");
doSubscribe();
}
function doSubscribe() {
client.subscribe("/topic1");
}
window.onload = function() {
this.doConnect();
}
</script>
</head>
.
.
.
</body>
</html>
我试图在 Firefox 中启动它。调试控制台输出告诉我
[09:58:27.825] Firefox can't establish a connection to the server at ws://test.mosquitto.org:1883/mqtt. @ file:///mqttws31.js:914
我知道 moquitto 本身不支持 websockets。但我认为在 test.mosquitto.org 上运行的 lighttp 安装了 mod_websockets。
mqttws31.js 的第 914 行正在尝试执行此操作。socket = new WebSocket(wsurl, 'mqttv3.1');
所以看起来
- 任一 websockets 都不适用于 test.mosquitto.org
- 或者我的例子是错误的!
我现在纠结了很长时间,需要运行一个 JavaScript MQTT 客户端。
有人有想法吗?还是另一种方法?Socket.IO 似乎也不是正确的解决方案。
首先十分感谢!