2016-06-14 4 views
0

Я хотел бы узнать ваше мнение/комментарии относительно этой концепции. Если имеется альтернатива? И если это будет осуществимо/полезно?Идея: генерировать несколько ответов HTTP с использованием одного запроса HTTP

Согласно моему пониманию, для каждого HTTP-запроса сервер выполняет некоторую операцию и отправляет ответ http.

Теперь рассмотрим любой сценарий, в котором мы хотим иметь больший контроль над процессом, выполняющимся на сервере.

Ситуация 1: http request send -> обработка запуска сервера (длительная задача в процессе) -> пользователь закрывает браузер. Здесь процесс по-прежнему выполняется, потребление клиента и ответа HTTP будет проигнорировано на клиенте.

Здесь ресурсы теряются.

Ситуация 2: HTTP запрос на отправку -> сервер начинает обработку (длинная задача в процессе)

Здесь клиент не знает о состоянии процесса, запущенного на сервере. Клиент должен дождаться ответа HTTP-ответа.

Моя идея: между первоначальным HTTP-запросом и окончательным ответом на HTTP добавьте функцию отправки нескольких промежуточных ответов HTTP, которые будут содержать информацию о процессе, выполняющемся на сервере.

Решение Ситуация 1: HTTP запрос на отправку -> обработка запуска сервера (длинный задача в процессе) -> [возвращает идентификатор процесса в качестве промежуточного ответа HTTP] -> пользователь закрывает браузер -> [Написать http-запрос для закрытия серверного процесса с использованием идентификатора процесса]

Решение для ситуации 2: http-запрос отправляет -> сервер начинает обработку (длительная задача в процессе) -> [возвращает http-ответы с подробной информацией о процессе, выполняющемся на сервер с интервалом времени] -> [выполнить любую операцию, если необходимо]

Прошу прокомментировать :) и исправьте, если мне что-то не хватает.

+0

Обычно это делается путем возврата 202 Принимается с заголовком 'Location', в котором говорится, куда искать результаты. Если вы хотите продолжить обновление, используйте WebSockets. Определение вашего собственного HTTP, вероятно, не является эффективным маршрутом вперед, и SO не может действительно помочь вам в этом процессе; мы не отвечаем за протокол. – jonrsharpe

+0

Звучит чисто и просто. Пойдите, реализуйте это. –

+0

@RolandIllig Я не думаю, что особенно конструктивно отправлять OP с помощью «go do it», когда они явно не понимают масштабов задачи. – jonrsharpe

ответ