0

在我的 app.js 中:


  var mqtt = require('mqtt')
  var client  = mqtt.connect('mqtt://localhost:1883')
  topic = 'testTopic'

  client.on('connect', ()=> {
    client.subscribe(topic)
  })

  client.on('message', function (topic, message) {
    console.log(message.toString())
  })

我在 hivemq-cli 和 hivemq 服务器中连接,然后testTopicTest1订阅中创建一个新主题,并让另一个订阅testTopic 图1

在 hivemq-cli 中一切正常,在我的终端中:

testTopic3@localhost> sub -t testTopic -s
Hello
Hello
Hello
Hello
Hello
Hello
Hi
Hi
Hi

但是当我使用 时npm start,我的网络应用程序说:Firefox 无法在 ws://localhost:1883/ 建立与服务器的连接,并且什么也不返回。

我已经遇到这个麻烦一天了,所以我很想寻求帮助。非常感谢!

4

2 回答 2

1

您在 Web 应用程序中使用 websockets (ws://),这可能是与 MQTT 端口 1883 (mqtt://) 不同的端口。

于 2020-05-05T12:41:06.527 回答
1

您必须在 HiveMQ 配置 (conf/config.xml) 中配置侦听器,并在连接客户端时使用正确的端口和路径。默认配置不包含 WebSocket 侦听器。

示例配置:

<hivemq>
    <listeners>

        <!-- default configuration -->
        <tcp-listener>
            <port>1883</port>
            <bind-address>0.0.0.0</bind-address>
        </tcp-listener>

        <!-- WebSocket configuration -->
        <websocket-listener>
            <port>8000</port>
            <bind-address>0.0.0.0</bind-address>
            <path>/mqtt</path>
            <subprotocols>
                <subprotocol>mqttv3.1</subprotocol>
                <subprotocol>mqtt</subprotocol>
            </subprotocols>
            <allow-extensions>true</allow-extensions>
        </websocket-listener>
    </listeners>
<hivemq>

在此示例中,您需要将客户端连接到 ws://localhost:8000/mqtt

有关配置的更多信息,请参见文档:https ://www.hivemq.com/docs/hivemq/latest/user-guide/listeners.html#websockets

于 2020-05-07T07:21:59.607 回答