Event: 'message'
-
message
<Object>
Similar to the cluster.on('message')
event, but specific to this worker.
This event is the same as the one provided by child_process.fork()
.
In a worker you can also use process.on('message')
.
As an example, here is a cluster that keeps count of the number of requests in the master process using the message system:
const cluster = require('cluster'); const http = require('http'); if (cluster.isMaster) { // Keep track of http requests var numReqs = 0; setInterval(() => { console.log('numReqs =', numReqs); }, 1000); // Count requests function messageHandler(msg) { if (msg.cmd && msg.cmd == 'notifyRequest') { numReqs += 1; } } // Start workers and listen for messages containing notifyRequest const numCPUs = require('os').cpus().length; for (var i = 0; i < numCPUs; i++) { cluster.fork(); } Object.keys(cluster.workers).forEach((id) => { cluster.workers[id].on('message', messageHandler); }); } else { // Worker processes have a http server. http.Server((req, res) => { res.writeHead(200); res.end('hello world\n'); // notify master about the request process.send({ cmd: 'notifyRequest' }); }).listen(8000); }
Please login to continue.