2016-04-14 8 views
1

私はNode.jsゲームサーバーを持っており、nodemon app.jsを実行して起動します。今、私はファイルを編集するたびに、サーバーが再起動します。私はsaveloadの機能を実装しており、再起動する前にゲームサーバーを再起動して(ファイルの変更により)ゲームを保存して再起動後の前の状態をloadできるようにしたい。このようなNodemonは、再起動するたびに機能を実行します。

何かが、私が欲しいものです:

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

https://github.com/remy/nodemon/blob/master/doc/events.md 'nodemon.on( 'restart'、...)'を試しましたか? – migg

+0

@ミグいいえ、 'nodemon'パッケージは含まれていませんでした。 – Cristy

+0

@miggいいえ、そのイベントは呼び出されません。 – Cristy

答えて

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

これはまだ私の質問に答えていない、あなたが言ったことはすべて、私のコードは正常に動作しているが、私の場合は(Windows上ではない)。 – Cristy

関連する問題