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.isMaster) { 11 let worker; 12 13 server.listen(0, common.mustCall((error) => { 14 assert.ifError(error); 15 assert(worker); 16 17 worker.send({ port: server.address().port }); 18 })); 19 20 worker = cluster.fork(); 21 worker.on('exit', common.mustCall(() => { 22 server.close(); 23 })); 24} else { 25 process.on('message', common.mustCall((msg) => { 26 assert(msg.port); 27 28 server.listen(msg.port); 29 server.on('error', common.mustCall((e) => { 30 cluster.worker.disconnect(); 31 })); 32 })); 33} 34