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