如何在mosquitto

时间:2018-02-08 12:38:13

标签: websocket mqtt iot mosquitto

我正在使用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

1 个答案:

答案 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 '#'

监视的本机MQTT消息

在Ubuntu 16.04上运行mosquitto v1.4.14(来自mosquitto ppa)的整件事