sendHandle
参数可用于将一个 TCP server 对象的句柄传给子进程,如以下示例所示:
const subprocess = require('child_process').fork('subprocess.js');
// 打开 server 对象,并发送该句柄。
const server = require('net').createServer();
server.on('connection', (socket) => {
socket.end('由父进程处理');
});
server.listen(1337, () => {
subprocess.send('server', server);
});
子进程接收 server 对象如下:
process.on('message', (m, server) => {
if (m === 'server') {
server.on('connection', (socket) => {
socket.end('由子进程处理');
});
}
});
一旦服务器在父进程和子进程之间是共享的,则一些连接可被父进程处理,另一些可被子进程处理。
上面的示例使用了一个由 net
模块创建的服务器,虽然 dgram
模块的服务器使用完全相同的工作流程,但它监听 'message'
事件而不是 'connection'
事件,且使用 server.bind()
而不是 server.listen()
。
目前仅在 Unix 平台上支持这一点。