HTTP-сервер, обнаруживший оборванное сетевое соединение от HTTP-клиента - PullRequest
0 голосов
/ 16 декабря 2010

У меня есть веб-приложение, в котором после отправки HTTP-запроса на сервер клиент завершает работу (или разрывает сетевое соединение) до того, как клиент полностью получит ответ.

В этом случае серверная часть приложения должна выполнить некоторую работу по очистке.Есть ли способ встроенный в протокол HTTP, чтобы обнаружить это условие.Как сервер узнает, ожидает ли клиент ответа или завершил работу?

Спасибо Виджай Кумар

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Нет, в протокол ничего не встроено для этого (в конце концов, вы не можете сказать, был ли ответ получен самим клиентом или просто прокси-сервером ниже по потоку).

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

Тем не менее, убедитесь, что вы понимаете последствия проблемы Two Generals '.

0 голосов
/ 16 декабря 2010

У вас могут быть проблемы с сетью ... обычно, когда вы отправляете HTTP-запрос на сервер, вы сначала отправляете заголовки, а затем содержимое POST (если это метод post).Аналогично, сервер отвечает заголовками и телом документа.Первая строка в заголовке - это статус.Обычно статус 200 - это статус успеха, если вы его получили, тогда не должно возникнуть проблем с получением оставшейся части документа.Проверьте это для получения подробной информации о заголовках статуса ответа HTTP http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html

LE: Извините, неправильно прочитал ваш вопрос.По сути, у вас нет триггера, когда пользователь отключается.Если вы используете ООП, вы можете использовать деструктор класса для очистки всего, что вам нужно.

...