【问题标题】:Mosca sends multiple messages continouslyMosca 连续发送多条消息
【发布时间】:2016-11-19 15:47:46
【问题描述】:

我已经设置了一个运行 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');
}

【问题讨论】:

    标签: node.js mosca


    【解决方案1】:

    事件监听器server.on('published', function(packet, client){...} 监听每个发布事件,包括服务器的。

    发生的情况是,当您在该侦听器中使用 server.publish(message, function(){...}) 时,它会触发另一个 published 事件,该事件会立即被侦听器捕获。

    它永远不会停止发布,因为它永远不会停止捕捉自己的事件。

    【讨论】:

      【解决方案2】:

      我也遇到过类似的问题。如果您注意到,Mosca 只有 QoS 0 和 Qos 1

      所以我认为代理尝试“至少一次”多次发送相同的消息,直到它收到来自客户端的一些确认。检查这个document out

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多