• message {Object}
    • handle {undefined|Object}

    类似于 cluster.on('message') 事件,但特定于此工作进程。

    在工作进程内,也可以使用 process.on('message')

    参见 [process event: 'message']。

    以下是一个使用消息系统的示例。 它在主进程中对工作进程接收的 HTTP 请求数量保持计数:

    1. const cluster = require('cluster');
    2. const http = require('http');
    3. if (cluster.isMaster) {
    4. // 跟踪 http 请求。
    5. let numReqs = 0;
    6. setInterval(() => {
    7. console.log(`请求的数量 = ${numReqs}`);
    8. }, 1000);
    9. // 对请求计数。
    10. function messageHandler(msg) {
    11. if (msg.cmd && msg.cmd === 'notifyRequest') {
    12. numReqs += 1;
    13. }
    14. }
    15. // 启动 worker 并监听包含 notifyRequest 的消息。
    16. const numCPUs = require('os').cpus().length;
    17. for (let i = 0; i < numCPUs; i++) {
    18. cluster.fork();
    19. }
    20. for (const id in cluster.workers) {
    21. cluster.workers[id].on('message', messageHandler);
    22. }
    23. } else {
    24. // 工作进程有一个 http 服务器。
    25. http.Server((req, res) => {
    26. res.writeHead(200);
    27. res.end('你好世界\n');
    28. // 通知主进程接收到了请求。
    29. process.send({ cmd: 'notifyRequest' });
    30. }).listen(8000);
    31. }