我正在尝试连接到MQTT.js的websocket客户端,但无法与服务器进行握手。
我的代码:
<html>
<head>
<title>test Ws mqtt.js</title>
</head>
<body>
<script src="//unpkg.com/mqtt@2.5.0/dist/mqtt.min.js"></script>
<script>
var options = {
clientId: 'service-3Kx03pKnM2',
connectTimeout: 5000,
hostname: 'xxx.xxx.xxx',
port: 8000
};
var client = mqtt.connect(options);
client.on('connect', function () {
client.subscribe('presence');
client.publish('presence', 'Hello mqtt')
});
client.on('message', function (topic, message) {
console.log(message.toString());
client.end();
});
</script>
</body>
</html>
我收到此错误:WebSocket connection to 'ws://broker.hivemq.com:8000/' failed: Connection closed before receiving a handshake response
。
如果我有任何错误,请告诉我。
我没有使用unpkg.com/mqtt@2.5.0/dist/mqtt.min.js
答案 0 :(得分:3)
您错过了连接选项中的path
。
HiveMQ公共代理监听/ mqtt上的websocket连接,这符合Eclipse Wiki
在MQTT连接上指定的url的路径部分应该是&#34; mqtt&#34; 例如ws://m2m.eclipse.org:800 / mqtt。 mqtt应该是默认选项,可以选择配置/指定
您需要在选项中添加path: '/mqtt'
。
var options = {
clientId: 'service-3Kx03pKnM2',
connectTimeout: 5000,
hostname: 'xxx.xxx.xxx',
port: 8000,
path: '/mqtt'
};