Skip to content

Instantly share code, notes, and snippets.

Created August 7, 2016 17:47
Show Gist options
  • Save anonymous/2f70a3241e29978514c59b6d8a9bf18d to your computer and use it in GitHub Desktop.
Save anonymous/2f70a3241e29978514c59b6d8a9bf18d to your computer and use it in GitHub Desktop.
"use strict"
Include the cluster module
var cluster = require('cluster');
// Code to run if we're in the master process
if (cluster.isMaster) {
console.log("Master");
// Count the machine's CPUs
var cpuCount = require('os').cpus().length;
// Create a worker for each CPU
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
cluster.on('exit', function(deadWorker, code, signal) {
// Restart the worker
var worker = cluster.fork();
// Note the process IDs
var newPID = worker.process.pid;
var oldPID = deadWorker.process.pid;
// Log the event
console.log('worker ' + oldPID + ' died.');
console.log('worker ' + newPID + ' born.');
});
// Code to run if we're in a worker process
} else {
var express = require("express");
var logger = require("morgan");
var bodyParser = require("body-parser");
var path = require('path');
var app = express();
var cron = require("./helpers/Cron");
var auth = require("./middlewares/Auth")
var permissions = require("./middlewares/Permissions")
var ActivityLayer = require("./middlewares/ActivityLayer")
var Notification = require("./middlewares/NotificationLayer")
var routes = require("./routes")(express);
var schedule = require('node-schedule');
//var server = require('http').createServer(app);
//var socket = require('socket.io')(server);
var cpuCount = require('os').cpus().length;
console.log(cpuCount);
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(express.static('../itboost-front'));
app.use(function(req, res, next) {
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS, PUT, PATCH, DELETE");
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With, content-type, token");
res.setHeader("Access-Control-Allow-Credentials", true);
next();
});
// check the enviornment type. If Cron execute the cron job
// else run the routes
if (process.env.SRV_TYPE == "cron") {
var rule = new schedule.RecurrenceRule();
rule.minute = new schedule.Range(0, 59, 2);
// run every 10 minute
var j = schedule.scheduleJob(rule, function() {
var d = new Date();
console.log("\n");
console.log("Cron is Starting on " + d.getHours() + " : " + d.getMinutes() + " : " + d.getSeconds());
cron();
});
} else {
app.use("/tokens", routes.tokens)
Object.keys(routes).forEach(function(route) {
app.use("/" + route.toLowerCase(), routes[route])
});
app.set('port', process.env.PORT || 3001);
var server = app.listen(app.get('port'), function() {
var d = new Date();
console.log("\n");
console.log("App is Starting on " + d.getHours() + " : " + d.getMinutes() + " : " + d.getSeconds());
console.log('Express server listening on port ' + server.address().port + " worker is " + cluster.worker.id);
});
console.log('Worker %d running!', cluster.worker.id);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment