«Если я не могу использовать 102 Обработка ...»
Не используйте 102 Processing
, так как он разработан специально для WebDAV .Пожалуйста, проверьте RFC2518 для получения подробной информации.
"Я хотел бы другое решение"
Вы можете вернуть 200 OK
для GET /dl
после получения запроса HTTP иЗапущен дочерний процесс, указывающий: «Эй, клиент, я получил твой запрос и успешно начал задание»:
app.get("/dl", (req, res) => {
require("child_process").exec("command -url".concat(req.query.url));
res.status(200).end();
});
Затем в дочернем процессе сохраняй результат выполнения где-нибудь (в файле(в БД и т. д.) и сопоставление результата с URL-адресом запроса:
query url A --> child process result A
query url B --> child process result B
query url C --> child process failed information
На стороне клиента, после получения 200 OK
для GET /dl
запроса, запустите опрос - отправляя запрос на сервер каждый раз.5 секунд (или любой другой временной интервал, который вам нужен), с предыдущим URL-адресом успешного запроса в качестве параметра, пытающегося получить результат в приведенном выше отображении.Это будет:
- Если результат найден в приведенном выше сопоставлении, клиент получит желаемое и остановит опрос.
- Если в приведенном выше сопоставлении ничего не найдено, клиентпродолжает опрашивать в течение следующих 5 секунд.
- Если найдена информация о сбое или опрашивается время ожидания, клиент сдается, прекращает опрос и отображает сообщение об ошибке.