HttpListener (или альтернатива?): поддерживать активное соединение

#.net #http #httplistener

#.net #http #httplistener

Вопрос:

У меня есть два приложения, обменивающиеся данными с использованием протокола HTTP. Одно приложение использует HTTPListener для получения данных от другого. Это работает довольно хорошо. Из-за того, что обычно связь осуществляется только между двумя приложениями, я хотел бы поддерживать соединение в рабочем состоянии как можно дольше. KeepAlive Свойству HttpListenerRequest присвоено значение true (это значение по умолчанию), но соединение, похоже, закрывается, как только я отправляю ответ.

Я не могу найти никаких настроек для HttpListener, таких как тайм-ауты и т.д. Возможно ли это вообще с этим классом или есть какие-либо более подходящие альтернативы?

Ответ №1:

Timeout это дело клиента — тот, кто запрашивает, ожидает тайм-аута.

KeepAlive это необязательный заголовок, который запрашивает сервер поддерживать активное соединение, в то время как сервер не обязан этого делать. Это поддержание в рабочем состоянии охватывает несколько запросов, которые, я полагаю, не то, что вам нужно.

Требуемое поведение может быть достигнуто с помощью chunked encoding .

послушайте этот подкаст, вы получите ответы на все вопросы.