[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/HowProgrammingWorks/NodeServer/master/native-cluster/server.js [Back]  [Original]

'use strict';

const http = require('node:http');
const cluster = require('node:cluster');
const os = require('node:os');

const PORT = 2000;

const user = { name: 'jura', age: 22 };
const pid = process.pid;

const routing = {
  '/': 'welcome to homepage',
  '/user': user,
  '/user/name': () => user.name,
  '/user/age': () => user.age,
};

const types = {
  object: (o) => JSON.stringify(o),
  string: (s) => s,
  number: (n) => n.toString(),
  undefined: () => 'not found',
  function: (fn, par, client) => JSON.stringify(fn(client, par)),
};

if (cluster.isPrimary) {
  const count = os.cpus().length;
  console.log(`Master pid: ${pid}`);
  console.log(`Starting ${count} forks`);
  for (let i = 0; i < count; i++) cluster.fork();
} else {
  const id = cluster.worker.id;
  console.log(`Worker: ${id}, pid: ${pid}, port: ${PORT}`);
  http
    .createServer((req, res) => {
      const data = routing[req.url];
      const type = typeof data;
      const serializer = types[type];
      res.setHeader('Process-Id', pid);
      res.end(serializer(data, req, res));
    })
    .listen(PORT);
}

Web Proxy Viewer  |  New URL  |  Original Page