MQTT.js未从WebSocket连接

MQTT.js未从WebSocket连接,websocket,mqtt,Websocket,Mqtt,我正在尝试连接的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 op

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

测试Ws-mqtt.js
变量选项={
clientId:'service-3Kx03pKnM2',
连接超时:5000,
主机名:“xxx.xxx.xxx”,
港口:8000
};
var client=mqtt.connect(选项);
client.on('connect',function(){
客户。认购(“在场”);
client.publish('presence','Hello mqtt')
});
client.on('message',函数(主题,消息){
console.log(message.toString());
client.end();
});
我收到以下错误:
WebSocket到“ws://broker.hivemq.com:8000/”的连接失败:在收到握手响应之前连接已关闭

如果我做错了,请告诉我


除了
unpkg.com之外,我没有使用任何其他脚本/mqtt@2.5.0/dist/mqtt.min.js

您的连接选项中缺少
路径。
HiveMQ公共代理在/mqtt上侦听websocket连接,这符合

MQTT connect上指定的url的路径部分应为“MQTT” 例如ws://m2m.eclipse.org:800/mqtt。mqtt应为默认值,并带有要配置/指定的备选方案的选项

您需要在选项中添加路径:'/mqtt'

var options = {
        clientId: 'service-3Kx03pKnM2',
        connectTimeout: 5000,
        hostname: 'xxx.xxx.xxx',
        port: 8000,
        path: '/mqtt'
    };

连接选项中缺少
路径
。 HiveMQ公共代理在/mqtt上侦听websocket连接,这符合

MQTT connect上指定的url的路径部分应为“MQTT” 例如ws://m2m.eclipse.org:800/mqtt。mqtt应为默认值,并带有要配置/指定的备选方案的选项

您需要在选项中添加路径:'/mqtt'

var options = {
        clientId: 'service-3Kx03pKnM2',
        connectTimeout: 5000,
        hostname: 'xxx.xxx.xxx',
        port: 8000,
        path: '/mqtt'
    };

我投票支持websocket版本和同行的不匹配。请注明浏览器信息。@cagdas:您能简要介绍一下吗?由于客户端和服务器之间的协议版本不匹配,在websocket上可能发生握手问题。因此,需要检查代理和客户机上使用的websocket协议的版本,如8或13等。据我记忆所及,它们可能太旧,无法交换握手,而握手是在头或其他地方定义的。所以,您可能需要检查您的客户端库以找到它。mqtt.js中的“protocolVersion:4”。我的投票是针对对等方的websocket版本不匹配。请注明浏览器信息。@cagdas:您能简要介绍一下吗?由于客户端和服务器之间的协议版本不匹配,在websocket上可能发生握手问题。因此,需要检查代理和客户机上使用的websocket协议的版本,如8或13等。据我记忆所及,它们可能太旧,无法交换握手,而握手是在头或其他地方定义的。因此,您可能需要检查您的客户机库以找到它。mqtt.js中的“protocolVersion:4”。