Мое веб-приложение должно обработать и служить большому количеству данных для отображения определенных страниц. Иногда, пользователь закрывает или обновляет страницу, в то время как сервер все еще занят, обрабатывая ее. Это означает, что сервер продолжит обрабатывать данные в течение нескольких минут только, чтобы отправить его клиенту, который больше не слушает.
Действительно ли возможно обнаружить, что соединение было повреждено и реагирует на него?
В этом конкретном проекте мы используем Django и NginX или Apache. Я предположил, что это возможно, потому что сервер разработки Django, кажется, реагирует на отмененные запросы путем печати Поврежденных исключений Канала. Я хотел бы иметь его, повышают исключение, которое мог поймать мой код приложения. Кажется, что JSP может сделать это. Так может node.js здесь.
С другой стороны, я мог зарегистрировать разгрузить обработчик событий на рассматриваемой странице, иметь ее, делают синхронный запрос XHR, чтобы предыдущий запрос от этого пользователя быть отмененным, и сделал некоторое межпроцессное взаимодействие для создания ее так. Возможно, если более медленная обработка данных была вручена другому процессу, который я мог более легко определить и уничтожить, не уничтожая процесс ответа...
HTTP не имеет состояния, поэтому единственный способ обнаружить отключенного клиента - это тайм-ауты.
См. Ответы на этот SO вопрос (сервлет Java: как определить закрытие браузера?).