Я как-то новичок в nodejs и дочерних процессах и в некоторых случаях сталкиваюсь с некоторыми проблемами. Что-то в фоновом режиме: У меня есть nodejs-Websocket-Server, который загружает HTML-страницу любому пользователю, который подключается. Если пользователь нажимает кнопку на HTML, он отправляет сообщение серверу, чтобы он начал процесс захвата изображения (в качестве дочернего процесса в узле). Таким образом, вы можете сравнить это с каким-то бесконечным циклом, который выполняется в дочернем. Пока все хорошо, это работает для меня.Запуск и остановка дочерних процессов из основного процесса только при необходимости в nodejs
Но теперь, если пользователь снова нажимает кнопку, дочерний процесс должен быть остановлен, поэтому захват изображения не будет идти дальше. Моя проблема в том, что я понятия не имею, как остановить дочерний процесс из основного процесса, не убивая его полностью (пользователь должен снова запустить цикл).
Это фрагмент из основного процесса («старт» является истинным или ложным, в зависимости от того, если пользователь нажал кнопку пуска Каждый раз, когда пользователь нажимает на кнопку «старт» изменяет свое состояние.):
var aCapLive = child.fork(__dirname + "/cp_capture_liveimg_async.js"); //Livebild
if (start) aCapLive.send(start);
else aCapLive.send(start);
и это от ребенка:
var i = 0;
process.on("message", function(message)
{
while(message)
{
console.log("CP aCapLive received message: Iteration " + i++);
}
console.log("CP aCapLive is going to exit now...");
process.exit();
}
Очевидно, что это не работает для меня, потому что я бегу в моем цикле и не могу обнаружить никаких изменений в «сообщении». Я был бы очень благодарен, если бы у кого-нибудь были какие-то идеи :)
Ну, да, у меня было это как раньше, но проблема в том, что я ХОЧУ выполнить бесконечный цикл, когда «сообщение» истинно. Когда пользователь снова нажимает кнопку, сообщение должно измениться на false, и цикл должен остановиться. Может быть, у меня есть неправильная идея сделать что-л. как это, но thats atm единственный способ, которым я могу это представить;) – Fidel90
Хорошо, есть способ сделать это, но это сложнее ... здесь, я напишу это. –
@ Fidel90 Был ли мой адрес для редактирования, что вы спрашивали? –