Я пытаюсь заставить Aedes работать в качестве MQTT-брокера и сервера Websocket. В соответствии с этим сделайте c: https://github.com/moscajs/aedes/blob/master/docs/Examples.md что я должен понять. В идеале я хочу, чтобы слушатель запускался независимо от того, является ли он клиентом веб-сокета или клиентом mqtt.
Можно ли сделать что-то вроде:
server.broadcast ('foo / bar', { data: ''})
и все клиенты, websockets и mqtt получают сообщение? Do c не очень понятен, и я очень удивлен, что используется websocket-stream. Это очень низкий уровень, не так ли?
вот какой-то код на стороне сервера:
const port = 1883
const aedes = require('aedes')({
persistence: mongoPersistence({
url: 'mongodb://127.0.0.1/aedes-test',
// Optional ttl settings
ttl: {
packets: 300, // Number of seconds
subscriptions: 300
}
}),
authenticate: (client, username, password, callback) => {
},
authorizePublish: (client, packet, callback) => {
},
authorizeSubscribe: (client, packet, callback) => {
}
});
//const server = require('net').createServer(aedes.handle);
const httpServer = require('http').createServer()
const ws = require('websocket-stream')
ws.createServer({ server: httpServer }, aedes.handle)
httpServer.listen(port, function () {
Logger.debug('Aedes listening on port: ' + port)
aedes.publish({ topic: 'aedes/hello', payload: "I'm broker " + aedes.id })
});