File: //opt/bitninja-dispatcher/node_modules/daemonize2/examples/advanced/app.js
var fs = require("fs"),
http = require("http"),
cluster = require('cluster');
var config = loadConfig(),
logStream = openLog("/tmp/sampleapp.log");
function loadConfig() {
return JSON.parse(fs.readFileSync(__dirname + "/config.json"));
}
function openLog(logfile) {
return fs.createWriteStream(logfile, {
flags: "a", encoding: "utf8", mode: 0644
});
}
function log(msg) {
logStream.write(msg + "\n");
}
log("Starting...");
if (cluster.isMaster) {
log("Forking workers")
var cpus = require('os').cpus().length;
for (var i = 0; i < cpus; i++) {
cluster.fork();
}
return;
}
log("Initiating worker")
var server = http.createServer(function(req, res) {
log("Request from " + req.connection.remoteAddress);
res.writeHead(200, {
"Content-Type": "text/plain"
});
res.end(config.msg);
}).listen(8080);
log("Started.");
process.on("uncaughtException", function(err) {
log(err.stack);
});
process.on("SIGUSR1", function() {
log("Reloading...");
config = loadConfig();
log("Reloaded.");
});
process.once("SIGTERM", function() {
log("Stopping...");
server.on("close", function() {
log("Stopped.");
logStream.on("close", function() {
process.exit(0);
}).end();
}).close();
});