【问题标题】:Cannot connect form javascript to a broker through tcp using mqtt.js无法使用 mqtt.js 通过 tcp 将表单 javascript 连接到代理
【发布时间】:2019-06-10 05:01:07
【问题描述】:

我想用 Javascript 连接一个 MQTT 代理,以便订阅一个主题并发布消息。连接需要通过端口 1883 上的 tcp 完成。我正在使用 MQTT.js 库。前端是angularjs。 下面的例子是 MQTT.js 页面中的例子,虽然连接不上。有人可以帮忙吗?

通过index.html连接:

<script src="../node_modules/mqtt/browserMqtt.js"></script>

连接代码:

var client = mqtt.connect('url.com:1883',{clientId :'client1', clean: true});
client.on('connect', function () {
  console.log("onsubscribe");
  client.subscribe('votingSignals', function (err) {
    if (!err) {
      console.log("onsubscribe");
      client.publish('votingSignals', 'start')
    }
 })
})

client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString())
  client.end()
})

显示的错误是:

与“ws://url.com:1883/”的 WebSocket 连接失败:WebSocket 握手期间出错:net::ERR_CONNECTION_RESET

【问题讨论】:

    标签: javascript angularjs tcp mqtt broker


    【解决方案1】:

    在 Web 浏览器中,您只能使用 MQTT over Websockets,而不是原生 MQTT(通过 TCP)。

    这是因为浏览器不会让你打开一个普通的套接字。

    【讨论】:

    • 感谢您的回答和编辑。有没有办法通过 TCP 连接(可能使用代理)?
    • 可以编写代理,但配置代理接受 MQTT over Websockets 更容易
    • hardillb,还有一个问题,有没有一种方法可以结合nodejs(来自gulp)和anular js,以便在没有websocket的情况下连接mqtt?
    • 这个问题太模糊了,但我要说不
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多