2016-11-19 17 views
0

Moscaを実行してノードjsサーバーをセットアップしました。クライアントは、Moscaサーバーに接続してメッセージを発行することができます。私は、メッセージの形で(いくつかのトピックに登録されている)確認応答をクライアントに送り返す必要があります。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'); 
} 

答えて

1

イベントリスナーserver.on('published', function(packet, client){...}は、サーバを含むすべてのパブリッシングイベントをリッスンします。何が起こっている

は、あなたがそのリスナー内server.publish(message, function(){...})を使用する場合、それはすぐにリスナーによってキャッチされている別の公表イベントをトリガーするということです。

決して公開を停止することは決してありません。自分のイベントを捕捉することが決して止まらないからです。

0

私は同様の問題に直面しています。あなたが気づいた場合、MoscaはQoS 0とQos 1しか持っていません。

したがって、クライアントから何らかの確認応答を受信するまで、ブローカは同じメッセージを「少なくとも1回」複数回送信しようとします。これをチェックするdocument out

関連する問題