У меня есть команда telnet
, которая получает в качестве параметра IP-адрес и порт и получает журнал из удаленной программы во время работы. Что я делаю: узел создаст процесс telnet
, отфильтрует журнал для некоторых сведений и попытается повторно запустить telnet
в случае его закрытия. Сначала он работает хорошо, но когда я закрываю удаленную программу, узел не пытается перезапустить telnet
.
'use strict';
const { spawn } = require( 'child_process' );
const cmd = 'telnet';
const params = ['10.10.10.10', '1010'];
var telnet;
let isRunning = false;
connect();
connectionCheckRoutine()
telnet.stdout.on( 'data', data => {
console.log( `> ${data}` );
isRunning = true;
} );
telnet.stderr.on('data', data => {
console.log(`err: ${data}` );
} );
telnet.on('close', code => {
console.log( `child process exited with code ${code}` );
isRunning = false;
} );
function connect(){
telnet = spawn( cmd, params);
}
async function connectionCheckRoutine(){
while(true){
await sleep(5000);
if(!isRunning){
console.log('Reconnecting...');
connect();
}
}
}
async function sleep(millis) {
return new Promise(resolve => setTimeout(resolve, millis));
}
Я ожидал, что после завершения процесса я могу попытаться переподключиться с помощью child_process.spawn(), но ничего не произойдет, если я вызову spawn () еще раз.