与Aedes同时使用Mqtt和Websocket

与Aedes同时使用Mqtt和Websocket,websocket,mqtt,aedes,Websocket,Mqtt,Aedes,我试图使Aedes作为MQTT代理和Websocket服务器工作。根据该文件: 我应该明白的。理想情况下,无论是websocket客户端还是mqtt客户端,我都希望启动侦听器 是否可以执行以下操作: 广播('foo/bar',{data:'}) 所有客户端、websockets和mqtt都会收到消息吗?文档不是很清楚,我对使用websocket流感到非常惊讶。这是非常低的lvl对吗 下面是一些服务器端代码: const port = 1883 const aedes = req

我试图使Aedes作为MQTT代理和Websocket服务器工作。根据该文件: 我应该明白的。理想情况下,无论是websocket客户端还是mqtt客户端,我都希望启动侦听器

是否可以执行以下操作:

广播('foo/bar',{data:'})

所有客户端、websockets和mqtt都会收到消息吗?文档不是很清楚,我对使用websocket流感到非常惊讶。这是非常低的lvl对吗

下面是一些服务器端代码:

    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 })
    });

只需使用相同的
aedes
对象启动两台服务器,如下所示:

const port = 1883
const wsPort = 8883

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)

server.listen(port, function() {
    Logger.debug('Ades MQTT listening on port: ' + port)
})

httpServer.listen(wsPort, function () {
    Logger.debug('Aedes MQTT-WS listening on port: ' + wsPort)
    aedes.publish({ topic: 'aedes/hello', payload: "I'm broker " + aedes.id })
});

只需使用相同的
aedes
对象启动两台服务器,如下所示:

const port = 1883
const wsPort = 8883

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)

server.listen(port, function() {
    Logger.debug('Ades MQTT listening on port: ' + port)
})

httpServer.listen(wsPort, function () {
    Logger.debug('Aedes MQTT-WS listening on port: ' + wsPort)
    aedes.publish({ topic: 'aedes/hello', payload: "I'm broker " + aedes.id })
});

我想您可能没有理解,Websocket支持是针对Websocket之上的MQTT,而不是原始Websocket连接。根据,MQTT服务器可以使用Websocket处理客户端。不因此,基本上,如果我使用这里指定的代码:我能够使用ws从浏览器连接到mqtt服务器吗?是的,它可以使用WebSocket作为mqtt协议的传输,而不是原始WebSocket i抱歉。。。但是我不明白。。。类似这样的内容:this.\u client=new Paho.MQTT.client(“localhost”,1883,“,”);如果Aedes是根据文档配置的,我想可以工作?好的,它可以工作。。。但是现在,普通mqtt客户机不想连接。所以我一开始就被困住了。无法使websocket和mqtt在同一端口上同时工作。我想您可能没有理解,websocket支持是针对websocket上的mqtt,而不是原始websocket连接。根据,mqtt服务器可以使用websocket处理客户端。不因此,基本上,如果我使用这里指定的代码:我能够使用ws从浏览器连接到mqtt服务器吗?是的,它可以使用WebSocket作为mqtt协议的传输,而不是原始WebSocket i抱歉。。。但是我不明白。。。类似这样的内容:this.\u client=new Paho.MQTT.client(“localhost”,1883,“,”);如果Aedes是根据文档配置的,我想可以工作?好的,它可以工作。。。但是现在,普通mqtt客户机不想连接。所以我一开始就被困住了。不能让websocket和mqtt在同一个端口上同时工作。好吧,它可以工作,问题是我认为我只能使用一个端口。不,你不能共享那样的端口(好吧,你可以,但不能使用这种框架,你会违反IBM专利iirc)好吧,它可以工作,问题是我认为我只能使用一个端口。不,你不能像那样共享端口(好的,你可以,但不能使用这种框架,你将违反IBM的iirc专利)