Мое веб-приложение должно обрабатывать и обслуживать множество данных для отображения определенных страниц. Иногда пользователь закрывает или обновляет страницу, пока сервер все еще занят обработкой. Это означает, что сервер будет продолжать обрабатывать данные в течение нескольких минут, только чтобы отправить их клиенту, который больше не прослушивает.
Можно ли обнаружить, что соединение было повреждено и реагировать на него?
В этом конкретном проекте мы используем Django и NginX или Apache. Я предположил, что это возможно, потому что сервер разработки Django, похоже, реагирует на отмененные запросы, печатав исключения Broken Pipe. Я бы хотел, чтобы это вызвало исключение, которое мог бы заразить мой код приложения. Похоже, JSP может это сделать. Так может node.js здесь.
В качестве альтернативы, я мог бы зарегистрировать обработчик события выгрузки на рассматриваемой странице, если бы он выполнял синхронный XHR, запрашивая, чтобы предыдущий запрос от этого пользователя был отменен, и делайте какую-то межпроцессную связь, чтобы сделать так. Возможно, если медленная обработка данных была передана другому процессу, который я мог бы легче идентифицировать и убить, не убивая процесс ответа...