0
가 나는 master.js과 master.js 더 많은 노예가 데이터를 처리해야 할 때마다 slave.js포트 찾는 경쟁 조건
을 가지고, 그것은 그들을 .fork 것입니다. slave.js (절단)
portscanner.findAPortNotInUse(config.wss.start_port, config.wss.end_port)
.then((port) => {
httpsServer.listen(port);
process.send('Connected and listening on : ' + port);
})
시작 포트는 11001이며 포트 지금 11100.
때때로 slave4입니다 종료하고 slave5 모두 11004 무료 생각에
, 해당 포트에 모두 결합 및 EADDRINUSE를 던지십시오.
master.js
function CreateSlave(mode, amount) {
return new Promise((res) => {
var c = connected_slaves;
for (var i = 0; i < amount; i++) {
var id = uuid.v4().split("-")[0];
slaves[c] = fork('/opt/nodeapps/ass/slave/server.js',
[serverKeyForSession, mode]);
slaves[c].id = id;
slaves[c].mode = mode;
AttachHandlerToSlave(c).then((res) => {
if (res) return;
});
c++;
}
});
}
function AttachHandlerToSlave(c) {
return new Promise((res, rej) => {
slaves[c].on('message', (msg) => {
console.log('\x1b[33m['+ slaves[c].id +'] | \x1b[0m'+msg);
});
res(true);
});
}
어떻게 그런 행동을 방지 할 수 있습니다?
아. 나도 사용할 수 있습니다. 좋은. 슬레이브에서 process.send를 사용하여 상태 업데이트를 얻었습니다. – DatNoHand
@DatNoHand 제공된 전체 예제를 추가했습니다. 제공된 링크에서 찾을 수 있습니다. –
그러나 부모는 어떤 포트가 열려 있는지 어떻게 알 수 있습니까? – DatNoHand