【发布时间】:2018-10-20 17:23:13
【问题描述】:
我在 Windows 上使用forever-monitor,默认情况下child processes are detached。
在我的应用程序中,我有一个 monitor.js 文件,它监视一个 server.js 文件,我希望能够在我通过退出 monitor.js 关闭我的应用程序时通知 server.js(在命令上点击 Ctrl + C -行)。
这是我的演示代码:
monitor.js
const path = require('path');
const forever = require('forever-monitor');
let child;
function exit() {
console.error('Received exit signal on main process.');
if (child) {
// TODO: Here I want to notify the "child", so that it can gracefully shutdown my server
child.stop();
}
process.exit(0);
}
['SIGINT', 'SIGKILL', 'SIGTERM'].forEach(signal => process.on(signal, exit));
child = new forever.Monitor(path.join(__dirname, 'server.js'));
child.start();
server.js
const express = require('express');
const app = express();
const port = process.env.PORT || 8080;
let server;
function stopServer() {
if (server) {
console.log('Shutting down server...');
server.close();
}
}
app.get('/', (request, response) => response.send('Hello'));
server = app.listen(port, () => console.log(`Server is running on port "${port}".`));
当monitor.js 收到SIGINT 时,我如何在server.js 中调用stopServer?
【问题讨论】:
标签: node.js process forever sigint forever-monitor