Я как-то новичок в nodejs и дочерних процессах, и теперь у меня возникают проблемы в моем приложении. Кое-что о фоне: у меня работает nodejs-Websocket-Server, который загружает HTML-страницу любому пользователю, который подключается. Если пользователь нажимает кнопку в HTML, он отправляет сообщение на сервер о том, что он должен запустить процесс захвата изображения (как дочерний процесс в узле). Таким образом, вы можете сравнить это с каким-то бесконечным циклом, который выполняется в дочернем элементе. Пока все хорошо, это работает для меня.
Но теперь, если пользователь снова нажмет кнопку, дочерний процесс должен быть остановлен, поэтому захват изображения не пойдет дальше. Моя проблема в том, что я понятия не имею, как остановить дочерний процесс из основного процесса, не убивая его полностью (пользователь должен иметь возможность снова запустить цикл).
Это фрагмент основного процесса («старт» имеет значение true или false, в зависимости от того, нажал ли пользователь кнопку запуска. Каждый раз, когда пользователь нажимает кнопку, «старт» меняет свое состояние):
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();
}
Очевидно, это не работает для меня, потому что я работаю в своем цикле и не могу обнаружить никаких изменений в «сообщении». Буду очень признателен, если у кого-то есть идеи :)