Вы можете просто запустить child_process.exec()
и направить процесс stdout и stderr к ответу http - ничего больше, чем это.
Единственное, что я вижу, это то, что если вы хотите, чтобы пользователь запускал любую команду, которую он хочет, приложение Node не обязательно будет знать тип MIME, чтобы сообщить браузеру, что ответ получен. И в то время, когда вам нужно отправить код ответа HTTP, вы не обязательно знаете, был ли процесс успешным или нет - поэтому, если вы действительно хотите использовать 500 Internal Server Error
, если удаленный процесс завершает работу с ненулевым значением, вы будете нужно буферизовать вывод до завершения процесса или подождать некоторое время и предположить, что если он не завершился неудачей через N секунд, он не будет.
Я предполагаю, что вы понимаете, что разрешение процессу удаленно запускать специальные программы на удаленной машине, просто делая запрос http * чрезвычайно опасно по причинам, столь же многочисленным, как и программы, которые могут быть запущены.
Вот пример того, как принимать запросы из Интернета, передавать их через программу и возвращаться в ответ. Он принимает входящий файл изображения, использует netpbm
и potrace
, чтобы преобразовать его в SVG и отправить результат обратно клиенту, даже не записав его на диск - Unix-каналы - замечательная вещь. Вам понадобится Linux или аналогичный, с установленными w / netpbm и potrace, чтобы реально использовать его:
https://timboudreau.com/code/traceservice/file/tip/traceservice.js