下面的例子是在主进程上处理连接,并把句柄丢到子进程中,让子进程来处理具体的数据。
const cluster = require('cluster');
const net = require('net');
if (cluster.isMaster) {
let worker = cluster.fork();
net.createServer(socket => {
worker.send(null, socket);
}).listen(3000);
let socket = net.connect(3000);
socket.write('hehe');
} else {
process.on('message', (message, handle) => {
handle.on('data', data => {
console.log(data + ''); // hehe
});
});
}
这样就不再需要依赖 cluster 那莫名其妙的端口共享机制了。而且还可以根据自己的业务需求,实现更加优秀的智能调度,选择更加空闲的进程来处理连接,充分利用系统资源。