MQTT js库,无法在Google Chrome中通过WebSocket连接到代理,但在FireFox中运行良好

wmomyfyw  于 2023-10-20  发布在  Go
关注(0)|答案(1)|浏览(175)

我正面临着一个问题,我试图找到解决方案,但没有什么对我有用。我使用MQTT.js库连接代理服务器。代码在下面。(视频:https://youtu.be/5e9lRZM4o8I

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script
      src="https://cdnjs.cloudflare.com/ajax/libs/mqtt/4.3.7/mqtt.min.js"
      integrity="sha512-tc5xpAPaQDl/Uxd7ZVbV66v94Lys0IefMJSdlABPuzyCv0IXmr9TkqEQvZiWKRoXMSlP5YPRwpq2a+v5q2uzMg=="
      crossorigin="anonymous"
      referrerpolicy="no-referrer"></script>

    <script>
      try {
        const client = mqtt.connect('ws://test.mosquitto.org:8080/mqtt');

        client.on('connect', () => {
          console.log('Connected');
        });
      } catch (e) {
        console.log(e);
      }
    </script>
  </body>
</html>

一切都很简单。但是当我尝试使用谷歌Chrome访问我的网站时,我得到了错误。


当我在隐身模式下使用FireFox或Chrome时,一切都运行良好

每个使用过这个库或知道一些解决方案的人,你能帮助我吗?太感谢了

a11xaf1n

a11xaf1n1#

我在一个React项目中使用了mqtt。你的代码看起来很好,但是一个区别是你用来连接的url,试试这个:
mqtt:test.mosquitto.org:8081
下面是React中的一个工作示例:

const url = "mqtt://test.mosquitto.org:8081";
const [client, setClient] = useState(null);

const mqttConnect = () => {
    const client = mqtt.connect(url);
    setClient(client);
  };

useEffect(() => {
    mqttConnect();
}, []);

 useEffect(() => {
    if (client) {
      client.on("connect", () => {
        console.log("connected");

      client.on("error", (err) => {
        console.error("Connection error: ", err);
        client.end();
      });

      client.on("reconnect", () => {
        console.log("Reconnecting");
      });
    }
  }, [client]);

相关问题