Я играл с новыми функциями async Servlet 3.0 с Tomcat 7.0.4. Я нашел это Chat Application, что позволяет клиентам зависать в запросе GET для получения обновлений сообщений. Это прекрасно работает, когда дело доходит до получения сообщений.Как узнать, закрыл ли клиент соединение
Проблема возникает, когда клиент отключен, то есть пользователь закрывает браузер. Кажется, что сервер не поднимает IOException
, хотя клиент отключился. Поток сообщений (см. Исходный код из ссылки выше) с радостью записывает все сохраненные выходные потоки AsyncContext
.
Является ли это ошибкой Tomcat? или я что-то упустил? Если это не ошибка, то как я должен определить, закрыл ли клиент соединение?
Ну, это позаботится об этом, если операция записи вызовет исключение IOException, которого не происходит. Таким образом, вы можете закрыть браузер и никогда не получить это исключение. И таймаут в этом примере 10 минут. Это довольно много, если вы позволите сказать сотням клиентов. – SS3 2010-11-23 07:40:11