По умолчанию TIdHTTPServer
отправляет ответ при выходе из обработчика события OnCommand...
. Однако можно отправить ответ раньше, либо:
, вызвав методы AResponseInfo.WriteHeader()
и AResponseInfo.WriteContent()
после заполнения свойств AResponseInfo
по мере необходимости.
запись непосредственно в сокет TCP, а затем установка для свойства AResponseInfo.HeaderHasBeenWritten
значения true, поэтому TIdHTTPServer
не пытается отправлять свой собственный ответ.
Примечание. Как только вы отправите ответ клиенту, клиент сможет отправлять новые запросы с использованием того же TCP-соединения (если используются HTTP keep-alives), но вы будете удерживать соединение от обработки этих запросов до тех пор, пока вы не выйдете из OnCommand...
обработчик событий.
Если вам требуется длительная обработка, обычно лучше как можно скорее отправить нормальный ответ клиенту, например, с ответом 102 Processing
, выйти из OnCommand...
обработчик событий, поэтому сервер восстанавливает контроль над соединением, выполняет фактическую обработку в фоновом режиме и позволяет клиенту запрашивать состояние обработки, используя последующие запросы в качестве необходимости д. Вы можете назначить обработчику ie или другой тип сгенерированного сервером идентификатора для обработки, а затем сделать так, чтобы клиент отправил этот cookie / ID обратно на сервер для запроса статуса обработки.