Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var cluster = require('cluster');
- const PORT = 3000;
- if (cluster.isMaster) {
- const numWorkers = require('os').cpus().length;
- console.log(`Master cluster setting up ${numWorkers} workers...`);
- workers = [];
- for (let i = 0; i < numWorkers; i++)
- workers[i] = cluster.fork();
- cluster.on('online', worker => {
- console.log(`Worker ${worker.process.pid} is online`);
- });
- cluster.on('exit', (worker, code, signal) => {
- console.log(`Worker ${worker.process.pid} died with code ${code}`);
- console.log('Starting a new worker');
- workers[workers.indexOf(worker)] = cluster.fork();
- });
- /* messages */
- cluster.on('message', (worker, message, handle) => {
- console.log(`message from worker ${worker.process.pid}: ${message.message}`)
- });
- setInterval(() => {
- workers.forEach(worker => {
- worker.send(`hello from master to process ${worker.process.pid}`);
- });
- }, 10000);
- } else {
- const app = require('express')();
- app.all('/*', (req, res) => {
- process.send({message: 'hello from worker'});
- res.json({process: process.pid, message: 'Hello'}).end();
- })
- app.listen(PORT, () => {
- console.log(`api on port ${PORT}, pid ${process.pid}`)
- });
- /* messages */
- process.on('message', message => {
- console.log(`message from master: ${message}`);
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement