Mosca连续发送多条消息
Mosca sends multiple messages continously
我已经设置了一个带有 Mosca 运行 的节点 js 服务器。客户端能够连接到 Mosca 服务器并发布消息。我需要以消息(订阅某个主题)的形式将确认发送回客户端。
以下代码在客户端发布消息后连续发送多条消息。我错过了什么吗?
var settings = {
port: 1882,
backend: ascoltatore
};
var message = {
topic: 'crofters',
payload: 'OK', // or a Buffer
qos: 2
};
var server = new mosca.Server(settings);
server.on('clientConnected', function(client) {
console.log('client connected', client.id);
});
// fired when a message is received
server.on('published', function(packet, client ) {
var packet_payload = packet.payload;
packet_payload = packet_payload.toString();
console.log('Published', packet_payload);
server.publish(message, function() {
console.log('done!');
});
});
server.on('ready', setup);
function setup() {
console.log('Mosca server is up and running');
}
我也遇到过类似的问题。如果您注意到,Mosca 只有 QoS 0 和 Qos 1
所以我想代理会尝试多次发送相同的消息 "at least once",直到它从客户端收到一些确认。检查此 document
事件侦听器server.on('published', function(packet, client){...}
侦听每个发布事件,包括服务器的。
发生的事情是,当您在该侦听器中使用 server.publish(message, function(){...})
时,它会触发另一个 published 事件,该事件会立即被侦听器捕获。
它从不停止发布,因为它从不停止捕获自己的事件。
我已经设置了一个带有 Mosca 运行 的节点 js 服务器。客户端能够连接到 Mosca 服务器并发布消息。我需要以消息(订阅某个主题)的形式将确认发送回客户端。
以下代码在客户端发布消息后连续发送多条消息。我错过了什么吗?
var settings = {
port: 1882,
backend: ascoltatore
};
var message = {
topic: 'crofters',
payload: 'OK', // or a Buffer
qos: 2
};
var server = new mosca.Server(settings);
server.on('clientConnected', function(client) {
console.log('client connected', client.id);
});
// fired when a message is received
server.on('published', function(packet, client ) {
var packet_payload = packet.payload;
packet_payload = packet_payload.toString();
console.log('Published', packet_payload);
server.publish(message, function() {
console.log('done!');
});
});
server.on('ready', setup);
function setup() {
console.log('Mosca server is up and running');
}
我也遇到过类似的问题。如果您注意到,Mosca 只有 QoS 0 和 Qos 1
所以我想代理会尝试多次发送相同的消息 "at least once",直到它从客户端收到一些确认。检查此 document
事件侦听器server.on('published', function(packet, client){...}
侦听每个发布事件,包括服务器的。
发生的事情是,当您在该侦听器中使用 server.publish(message, function(){...})
时,它会触发另一个 published 事件,该事件会立即被侦听器捕获。
它从不停止发布,因为它从不停止捕获自己的事件。