MQTT.js未从WebSocket连接
我正在尝试连接的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
<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”。