Skip to content

Instantly share code, notes, and snippets.

@colibie
Created May 4, 2020 19:51
Show Gist options
  • Save colibie/2db36845de93a7f54c369b6f7e2cd6e6 to your computer and use it in GitHub Desktop.
Save colibie/2db36845de93a7f54c369b6f7e2cd6e6 to your computer and use it in GitHub Desktop.
/* eslint-disable no-console */
require('dotenv').config();
const cluster = require('cluster');
const jwt = require('jsonwebtoken');
const backgroundJobHandler = require('background_job_handler');
const app = require('./appREST');
const rpc = require('./appRPC');
const { DB } = require('./api/models');
const seeder = require('./seeder');
const Config = require('./config');
if (cluster.isMaster) {
console.log(`Master ${process.pid} is running`);
// seed app
(async () => {
try {
const result = await seeder();
console.log(result);
backgroundJobHandler.start(__dirname);
await DB.disconnect();
} catch (error) {
console.log(error);
// exit app if seeding fails
process.exit(-1);
}
})();
// Fork workers.
for (let i = 0; i < Config.WEB_WORKER_COUNT; i++) {
cluster.fork();
}
cluster.on('exit', (worker, code, signal) => {
console.log(`worker ${worker.process.pid} died`);
cluster.fork();
});
} else {
const ip = process.env.IP || 'localhost';
const port = process.env.PORT || 10010;
const rpcToken = jwt.sign(`${Date.now()}${port}`, Config.RPC_SECRET);
const msg = `******************************************************
RPC TOKEN: ${rpcToken}
******************************************************`;
console.log('SERVER_MODE', Config.SERVER_MODE);
switch (Config.SERVER_MODE) {
case 'RPC':
console.log(msg);
// begin listening for client requests
rpc.listen(Number(port) + 1, () => {
console.log('runnging on', ip, Number(port) + 1);
});
break;
case 'REST':
default:
// begin listening for client requests
app.listen(port, () => {
console.log('runnging on', ip, port);
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment