将 Reactjs 连接到 Myqtthub

IT技术 node.js reactjs mqtt iot
2021-05-08 06:06:33

您好,我是所有这些物联网的新手,我希望能够使用https://myqtthub.com作为我们的代理,通过 mqtt 从 Arduino 发送和接收数据我使用以下代码进行连接:

import React, { Component } from 'react';

var mqtt = require('mqtt');

var options={
    clientId:"mqttjs01",
    username:"user",
    password:"password",
    clean:true};
    var client = mqtt.connect("mqtt://node02.myqtthub.com",options)

client.on('connect', () => {
    alert('Connected!');
   
    console.log('Connected');
});




class Garage extends Component {
   
   
    render() {
        return (
            <div>
                <h1>HEllooo</h1>
            </div>
        );
    }
}

export default Garage;

我遇到错误:“与 'ws://node02.myqtthub.com/' 的 WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:301”

任何帮助将不胜感激。

2个回答

假设这一切都在浏览器中运行(主要是因为 MQTT.js 强制连接通过 ws://,因为这是浏览器中的唯一选项)。

查看 myqtthub 的文档,他们没有声称通过 Websockets 支持 MQTT(并且支持论坛说他们还不支持它)。这意味着您的应用程序将无法与此代理提供程序一起使用,直到他们添加 Websockets 支持。

呃......从哪里开始......

首先,请阅读https://github.com/mqttjs/MQTT.js 上的文档

你连接,但你从不订阅......更不用说你没有发布任何你正在发布任何数据的代码。client可以发送 (PUBLISH) 和接收 (SUBSCRIBE) 数据,但您必须同时设置它们。

至于您最初的问题,您没有定义要在连接上使用的端口。您还将指定mqtt://为协议,而不是ws://,因此如果您确实需要 WebSocket 连接,这也会给您带来问题。您如何获得 websocket 错误是一个谜,因为您的代码示例显示它使用的是 MQTT 协议。

如果您刚刚开始,请坚持mqtt://并从那里开始。