0
私はmaster.jsとslave.jsポート発見競合状態
master.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で、エンドポートが今時々slave4 11100
あると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);
});
}
どのように私はそのような行動を防ぐことができますか?
ああ、私も.sendを使用できますか?いいね私はスレーブのprocess.sendを使用して状態の更新を取得していました – DatNoHand
@DatNoHand私は通信の完全な例を追加しました。提供されたリンクで見つけることができます。 –
しかし、どのポートが開いているか、親はどのように知っていますか? – DatNoHand