MQTT.js没有从websockets连接

时间:2017-03-24 13:13:43

标签: websocket mqtt

我正在尝试连接到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

以外的任何其他脚本

1 个答案:

答案 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'
    };