Есть TIdHTTPServer от Инди.
Есть событие OnCommandGet. Там происходит много внутренней работы, но при этом клиенту ничего не отправляется.
Когда завершается tcp-соединение в таком случае? Не хотелось бы держать коннект открітім длительное время.
TIdHTTPServer, когда конец соединения
Модератор: Модераторы
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Читаете ARequestInfo что хотят от сервера. Пишете в AResponseInfo ответ. А иначе, как сервер поймет, что ответить?
Там же и CloseConnection есть. А вдруг вы не хотите закрывать подключение, и следом еще запросы пойдут?
Там же и CloseConnection есть. А вдруг вы не хотите закрывать подключение, и следом еще запросы пойдут?
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
А если я не хочу писать в AResponseInfo ответ? Нет необходимости. Сразу делать CloseConnection?
Добавлено спустя 42 минуты 43 секунды:
Не знаю, насколько правильно я делаю, но сделал так:
Добавлено спустя 42 минуты 43 секунды:
Не знаю, насколько правильно я делаю, но сделал так:
Код: Выделить всё
AResponseInfo.ResponseNo:=200;
AResponseInfo.ContentText:='<HTML><BODY><B>200 OK</B></BODY></HTML>';
AResponseInfo.WriteContent;
AContext.Connection.Disconnect; - serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
GAMER писал(а):AContext.Connection.Disconnect;
Закрывать принудительно соединение не обязательно, лучше поставить признак AResponseInfo.CloseConnection := True; и сервер сам его закроет после выхода из обработчика.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Ответить все же очень желательно, иначе со стороны клиента непонятно, обработан запрос или нет. Даже если ответ в принципе не нужен. Например, вы отправили команду открыть шлагбаум и своими глазами видите результат. В некоторых сетях и платформах могут быть какие-то специальные оптимизации соединений HTTP, и нестандартное поведение может вызвать глюки и сбои. Например, Андроид долгое время держит порт открытым даже после закрытия программы и не дает повторно к нему подключиться.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
странно, но с AResponseInfo.CloseConnection := True; вываливается ошибка. По ходу, оно коректно работает и без этого. Долгую работу вывел в отдельный процес, по-этому соединение закрывается быстро относительно.
Добавлено спустя 32 секунды:
204 неплохой ответ
Добавлено спустя 32 секунды:
204 неплохой ответ
