我正在使用mosquitto mqtt和MQTT协议以及基于websockets协议的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
答案 0 :(得分:1)
您无需进行任何更改。
所有使用mosquitto的侦听器/协议共享一个主题空间。
以下mosquitto.conf有效:
port 1883
listener 8083
protocol websockets
与以下nodejs app一起使用来测试websockets:
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 '#'
在Ubuntu 16.04上运行mosquitto v1.4.14(来自mosquitto ppa)的整件事