2016-02-18 37 views
1

我試圖將數據從我的主應用程序發送到子進程。我嘗試了幾種不同的選擇,但我目前被卡住了。建議或指針非常感謝。使用程序化API向PM2進程發送數據

我在http://pm2.keymetrics.io/docs/usage/pm2-api/

index.js以下文件:

var pm2 = require('pm2'); 
var processName = "pm2_app"; 


console.log("hello world!"); 
pm2.connect(function(err) { 
    if (err) { 
    console.error(err); 
    process.exit(2); 
    } 

    pm2.start({ 
    script : "pm2_app.js" // Script to be run 
    }, function(err, apps) { 

    if(err) { 
     console.log(err); 
    } 
    console.log("app started!"); 
    pm2.list(function(err, list) { 
     console.log("Child process started with pid: " + list[0].pid); 
     pm2.sendDataToProcessId({ 
      type : 'process:msg', 
      data : { 
      some : 'data', 
      hello : true 
      }, 
      id : list[0].pid 
     }, 
     function(err, res) { 
      console.log(err); 
      console.log("message sent"); 
     }); 

     pm2.disconnect(); 

    }); 
    }); 
}); 

pm2_app.js:

var start = Date.now(); 

setInterval(function(){ 
    console.log(Date.now() - start); 
}, 1000); 

process.on('message', function(packet) { 
    console.log("got message from mr. Rabbit"); 
    console.log(packet); 
}); 
+0

試送字典的一部分:'process.on( '過程:味精',.. ..)' – Ziki

回答

3

This solution@chrizz1001提供最終工作:

index.js

var pm2 = require('pm2'); 

pm2.connect(function(err) { 
    if (err) { 
    console.error(err); 
    process.exit(2); 
    } 

    pm2.start({ 
    script : "pm2_app.js" // Script to be run 
    }, function(err, apps) { 

    if(err) { 
     console.log(err); 
    } 
    console.log("app started!"); 
    pm2.list(function(err, list) { 

     pm2.sendDataToProcessId(list[0].pm2_env.pm_id, { 
      type : 'process:msg', 
      data : { 
      some : 'data', 
      hello : true 
      }, 
      topic: "my topic" 

     }, 
     function(err, res) { 
      console.log(err); 
     }); 

     pm2.disconnect(); 
    }); 
    }); 
}); 

pm2_app.js:

var start = Date.now(); 

setInterval(function(){ 
    console.log(Date.now() - start); 
}, 1000); 

process.on('message', function (data) { 
    console.log('your actual data object', data.data); 
}); 

是什麼使的伎倆是兩件事情:

  • ID這意味着PM2 id,而不是系統/操作系統pid
  • 注意,ID一種說法的sendDataToProcessId(ID,...),而不是在
相關問題