Nodemon在每次重启之前执行函数

时间:2016-04-14 17:32:04

标签: javascript node.js signals nodemon

我有一个Node.js游戏服务器,我通过运行nodemon app.js启动它。现在,每次编辑文件时,服务器都会重新启动。我已经实现了saveload函数,我希望每次游戏服务器重新启动(由于文件chages)游戏都要在重新启动之前保存,以便我可以load之前的状态重启后。

这就是我想要的东西:

process.on('restart', function(doneCallback) {
   saveGame(doneCallback);
   // The save game is async because it is writing toa file
}

我尝试使用SIGUR2事件,但从未触发过。这是我尝试过的,但从未调用过函数。

// Save game before restarting
process.once('SIGUSR2', function () {
     console.log('SIGUR2');
     game.saveGame(function() {
        process.kill(process.pid, 'SIGUSR2');
     });
});

1 个答案:

答案 0 :(得分:0)

下面的代码在Unix机器上正常工作。现在,由于您的saveGame是异步的,您必须从回调中调用process.kill。

process.once('SIGUSR2', function() {
    setTimeout(()=>{
        console.log('Shutting Down!');
        process.kill(process.pid, 'SIGUSR2');
    },3000);

});

因此,只要您在game.saveGame()函数中执行回调函数,您的代码就会很好。

// Save game before restarting
process.once('SIGUSR2', function () {
     console.log('SIGUR2');
     game.saveGame(function() {
        process.kill(process.pid, 'SIGUSR2');
     });
});