MQTT.jsのwebsocketクライアントに接続しようとしていますが、サーバーとのハンドシェイクを取得できません。MQTT.jsがWebソケットから接続していません
マイコード:
<html>
<head>
<title>test Ws mqtt.js</title>
</head>
<body>
<script src="//unpkg.com/[email protected]/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
。
私が間違いをしている場合はお知らせください。
私はあなたがあなたの接続オプションでpath
が欠落しているunpkg.com/[email protected]/dist/mqtt.min.js
私の投票は、ピアのWebSocketバージョンの不一致です。ブラウザの情報を示してください。 – cagdas
@cagdas:要約できますか?私はあなたを得ることができませんでした – RealSteel
クライアントとサーバーの間のプロトコルバージョンの不一致のために、websocketで起こりうるハンドシェイクの問題が発生しています。だから、どのバージョンのwebsocketプロトコルが8または13などのブローカーとクライアントで使用されているかを調べる必要があります。ハンドシェイクを交換するには古すぎるかもしれません。 – cagdas