/* 应用守护脚本。当服务器进程失败时,重启IM服务器。 */ var cp = require('child_process'); var worker; function spawn(spawnScript) { //进行守护,开启IPC通道,双向通信 worker = cp.spawn('node', [spawnScript], { stdio: [0, 1, 2, 'ipc'] }); //监视子进程,当其崩溃时处理 worker.on('exit', function (code) { if (code !== 0) { console.log('IM server is down, restarting...'); spawn(spawnScript);//重启服务 } }); worker.on('message', function (msg) { console.log(msg); }); } function main() { spawn('./bin/spawn.script'); // 要守护的进程文件 process.on('SIGTERM', function () { worker.kill(); process.exit(0); }); } main();