【问题标题】:How to share topics between two protocols in mosquitto如何在 mosquitto 中的两个协议之间共享主题
【发布时间】:2018-07-19 00:54:16
【问题描述】:

我正在使用带有 MQTT 协议和 MQTT over websockets 协议的 mosquitto mqtt。有些客户端使用 mqtt 协议,有些使用 websocket 协议,因为它们的局限性。 MQTT 端口是 1883,websocket 端口是 8083。问题是我想分享两个端口上的所有主题,即 websocket 和 MQTT。我应该在我的 MQTT 代理或任何其他解决方案中进行哪些类型的配置?

换句话说,我想收听 websocket(端口 8083)上的所有主题,这些主题在同一代理的 mqtt(端口 1883)上发布,反之亦然。

mosquitto.conf 文件如下

allow_anonymous false
password_file /etc/mosquitto/passwd

listener 8083 127.0.0.1
protocol websockets

【问题讨论】:

  • 那个配置文件只有一个websocket监听器,原生MQTT监听器在哪里?
  • 默认 MQTT 端口是 1883 并且正在使用它。

标签: websocket mqtt iot mosquitto


【解决方案1】:

您无需更改任何内容。

只有一个主题空间在所有侦听器/协议中与 mosquitto 共享。

以下 mosquitto.conf 有效:

port 1883

listener 8083
protocol websockets

与以下 nodejs 应用一起使用来测试 websocket:

var mqtt = require('mqtt')
var client  = mqtt.connect('ws://localhost:8083')

client.on('connect', function () {
  client.subscribe('#')
  client.publish('presence', 'Hello mqtt')
})

client.on('message', function (topic, message) {
  // message is Buffer
  console.log("%s - %s", topic, message.toString())
})

以及使用mosquitto_pub -t "foo" -m "bar" 注入并使用mosquitto_sub -v -t '#' 监控的原生MQTT 消息

在 Ubuntu 16.04 上运行 mosquitto v1.4.14(来自 mosquitto ppa)

【讨论】:

  • 感谢您的回复。 :) 我没有明白你的意思。实际上,我想收听 websocket(端口 8803)上的所有主题,这些主题发布在同一代理的 mqtt(端口 1883)上。
  • 是的,我就是这么说的。客户端连接的协议无关紧要,它可以发布和查看来自所有客户端的所有主题
  • 但是当我在 1883 端口(即 mqtt 连接)上向主题发布任何内容时,我在 8803 端口(即 ws 连接)上没有收到任何内容。甚至我都订阅了所有主题
  • 编辑问题以包含您的 mosquitto.conf 文件,以便我们查看您的设置。
  • 完成!在这两个协议之间有一个特别要分享的话题,这就是我正在寻找的.. :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
相关资源
最近更新 更多