Я пытаюсь получить незапрошенный ввод от пользователя на сервере NodeJS. Причина в том, что я хочу иметь возможность отправлять строки, которые можно интерпретировать как команды во время работы сервера, например команды для очистки кеша.
Первоначально я использовал readline следующим образом:
import * as ReadLine from 'readline';
export default function InitTerminal() {
const terminal = ReadLine.createInterface({
input: process.stdin,
terminal: false
});
terminal.on('line', (input) => {
console.log(input);
switch(input.toString()) {
default:
console.log('Unknown Command');
break;
}
});
}
Проблема заключалась в том, что после большинства входных данных я получил бы:
rl.on line * input *
Где * input * относится к строковому представлению ввода буфера из process.stdin. Странно то, что онлайн-линия срабатывает только изредка, и обычно я получаю эту строку, а мой слушатель не срабатывает. То же самое происходит, когда я не использую ReadLine, а просто добавляю прослушиватель в process.stdin. Что-то запускает узел для вывода вышеприведенного вывода. Я использую узел 11.12.0 и ts-node-dev для машинописного текста в режиме разработки.
Итак, я спрашиваю, как я могу использовать узел для получения ввода без подсказки в виде команд? Либо изменив мой исходный код, либо каким-либо образом, о котором я не подумал.
Доброе спасибо.