var cp = require(‘child_process’); var child1 = cp.fork(‘child.js’); var child2 = cp.fork(‘child.js’);
var server = require(‘net’).createServer(); server.on(‘connection’, function (socket) { socket.end(‘handled by parent\n’); }); server.listen(1337, function () { child1.send(‘server’, server); child2.send(‘server’, server); });
//子进程 child.jsprocess.on(‘message’, function (m, server) { if (m === ‘server’) { server.on(‘connection’, function (socket) { socket.end('handled by child, pid is ’ + process.pid + ‘\n’); }); } });
每次访问时候,为什么总是其中一个进程执行,而不是3个进程都执行一遍,主进程明明把服务器传给了两个子进程啊
创建子进程的目的就是为了减轻服务器的压力,换个思路想,假如一个请求让你创建出的子进程都执行,那还有什么意义?
这里主要是楼主用错了回调的时机,按照你提供的代码,server在child监听message的时候就已经做好了connection的触发,不会再执行第二次。 而且还有一个问题是server为何要子进程来操作,实在不懂里面的需求是什么。