Child Process小记
发布于 7 年前 作者 showen 4720 次浏览 最后一次编辑是 4 年前

看了一下官网的Child Process文档,做个笔记,大家一起学习一下,详情请查看官网文档, parentS.js代码如下:

var child = require('child_process').fork('child.js');//child.js对应子进程程序文件

var server = require('http').createServer(function(req,res)
	{

	});
server.listen(3698,function(req,res)
	{
		child.send('message', server);//传递server,并通知子进程监听此http服务connection事件
	});
 console.log("listening 3698..");


 server.on("connection",function(req,res)
     {
     	req.end("handle by parent");
     });

child.js代码如下:

process.on('message', function(m,server) {
  if (m=='message') {

     server.on("connection",function(req,res)
     {
     	req.end("handle by child");
     	//process.disconnect();   //关闭此child进程
     });
  }
});

略微解释一下: 进入目录,node parentS.js一下,可以查看到启动了两个node进程,父进程通过child.send(‘message’, server)把server服务传递给了子进程,并且子进程也监听了server的connection消息,这样在浏览器下输入"http://127.0.0.1:3698/"会看到输出,到底是哪个进程处理了connection请求呢,答案是不确定的,两个进程都有机会去处理connection连接,大家可以不停的请求试试看。看了官网的文档,文档给的例子是父进程传递给子进程的是net服务、socket等,我就写了一下传递http服务试了一下。这样是不是就可以利用多核服务器的资源了呢。

2 回复

建议可以直接用cluster 用法差不多

回到顶部