1'use strict'; 2const common = require('../common'); 3const http = require('http'); 4const cluster = require('cluster'); 5const assert = require('assert'); 6 7cluster.schedulingPolicy = cluster.SCHED_NONE; 8 9const server = http.createServer(); 10if (cluster.isPrimary) { 11 let worker; 12 13 server.listen(0, common.mustSucceed(() => { 14 assert(worker); 15 16 worker.send({ port: server.address().port }); 17 })); 18 19 worker = cluster.fork(); 20 worker.on('exit', common.mustCall(() => { 21 server.close(); 22 })); 23} else { 24 process.on('message', common.mustCall((msg) => { 25 assert(msg.port); 26 27 server.listen(msg.port); 28 server.on('error', common.mustCall((e) => { 29 cluster.worker.disconnect(); 30 })); 31 })); 32} 33