Сценарий:Обнаруживать браузер закрыт в середине цикла ответа на запрос HTTP
- веб-приложения подключения к Java Servlet. (Использование встроенного причала)
- Высокий запрос на задержку, пример создания отчета (занимает секунды)
- Пользователь может закрыть браузер между циклом ответа HTTP-запроса.
Проблема:
Как обнаружить браузер Зазор между запросами и ответами циклом, на стороне сервера?
Хотя проблема может быть решена с помощью другого запроса от пользовательского интерфейса, мне было интересно, можем ли мы получить информацию из самого протокола связи? Поскольку HTTP использует протокол TCP/IP в качестве базового протокола, мы не можем обнаружить это как соединение, закрытое со стороны инициатора соединения.
Я прошел через ассемблер сервлета, а также api, используемый для настройки сервера причала, но не смог найти ничего близкого.
пошел Также через эти StackOverflow вопросы
- Java Servlet : How to detect browser closing?
- How to detect browser close at server side in asp.net?
Любые идеи?
Благодарим за отзыв. В основном вы указываете на метод out.checkError(). Я искал механизм, основанный на событии, который я могу обнаружить ** между ** и, возможно, прекратить обработку. – arunvg
Я не думаю, что такое событие существует, но вы можете запустить свое собственное событие путем прослушивания 'window.close()' в клиенте (javascript) и отпустить второй запрос ajax. Например: '$ (window) .close (new function() {...})' –
В этой ситуации сервер не может инициировать событие. только попытка использовать соединение приведет к тому, что событие будет замечено. это может быть чтение из входного потока запроса или запись в выходной поток ответа. –