Child Process小记
看了一下官网的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 用法差不多