阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js cluster Worker message 事件

      Node.js cluster Worker message 事件 新增于: v0.7.0

      • message < Object>
      • handle < undefined> | < Object>

      和cluster.on(‘message’)事件类似,但针对特定的工作进程。

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

      详见 process event: ‘message’.

      在下面这个例子中,我们使用message机制来实现主进程统计cluster中请求数量的功能。

      const cluster = require('cluster');
      const http = require('http');
      
      if (cluster.isMaster) {
      
        // 跟踪 http 请求
        let numReqs = 0;
        setInterval(() => {
          console.log(`numReqs = ${numReqs}`);
        }, 1000);
      
        // 计算请求数目
        function messageHandler(msg) {
          if (msg.cmd && msg.cmd === 'notifyRequest') {
            numReqs += 1;
          }
        }
      
        // 启动 worker 并监听包含 notifyRequest 的消息
        const numCPUs = require('os').cpus().length;
        for (let i = 0; i < numCPUs; i++) {
          cluster.fork();
        }
      
        for (const id in cluster.workers) {
          cluster.workers[id].on('message', messageHandler);
        }
      
      } else {
      
        // Worker 进程有一个http服务器
        http.Server((req, res) => {
          res.writeHead(200);
          res.end('hello world\n');
      
          // 通知 master 进程接收到了请求
          process.send({ cmd: 'notifyRequest' });
        }).listen(8000);
      }
      

      更多内容请参考:Node.js cluster 集群,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录