0

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

2 に答える 2

2

イベント リスナーserver.on('published', function(packet, client){...}は、サーバーのイベントを含め、すべての発行イベントをリッスンします。

何が起こっているかというと、server.publish(message, function(){...})そのリスナー内で使用すると、別の発行されたイベントがトリガーされ、リスナーによってすぐにキャッチされます。

独自のイベントのキャッチを停止しないため、発行が停止することはありません。

于 2016-12-22T21:28:51.000 に答える