首页 > 解决方案 > 如何使用 react-websocket 连接到 Mosquitto

问题描述

npm install react-websocket

我正在尝试连接 Windows Mosquitto(MQTT 代理服务器)。

然后我在我的反应源中设置了 websocket 地址,但无法接收来自 Mosquitto 的消息,也无法将任何消息发布到 Mosquitto 服务器。

但它适用于由 Java 运行的 glassfish 服务器。

我认为 Mosquitto 和 glassfish 服务器是同一个 websocket 服务器,但似乎它们之间存在差异。

是否有使用 react-websocket 库连接 Mosquitto Broker 服务器的解决方案?

react-websocket 库的版本是 2.0.0 Mosquitto MQTT Broker 服务器版本是 1.5.4

import Websocket from 'react-websocket'

export default class WebsocketInput {

  constructor(queue, onOpenCallback) {
    this.queue = queue
    this.websocket = new Websocket({
      url: process.env.REACT_APP_WEBSOCKET_ADDRESS,
      onMessage: function(data) {
        queue.offer(JSON.parse(data))
      },
      onOpen: function() {
        onOpenCallback()
      }
    })
    this.websocket.setupWebsocket()
  }

  sendMessage(msg) {
    this.websocket.state.ws.send(msg)
  }

  close() {
    this.websocket.shouldReconnect = false
    this.websocket.state.ws.close()
  }
}

这是 React 代码,我从https://github.com/door2door-io/simulation-demo下载了它。我设置了 url 'ws://localhost:9001',但在 React 应用程序中收不到任何消息。

port 1883
protocol mqtt

listener 9001
protocol websockets

这是 mosquitto.conf 文件的一部分。我通过键入 mosquitto -v -c mosquitto.conf 来运行服务器,并在 Windows CMD 中运行 mosquitto 服务器。谢谢

标签: reactjswebsocketmqttmosquitto

解决方案


推荐阅读