Время ожидания WebSocket и сеанса Jetty 8 - PullRequest
2 голосов
/ 18 октября 2011

Я новичок в пристани, и я пытаюсь разработать небольшое приложение, которое использует различные сервлеты.Одним из таких сервлетов является WebSocketServlet.Сейчас я пытаюсь создать механизм аутентификации, и моя основная идея - использовать стандартную реализацию Jett HttpSession, к которой может обращаться HttpServletRequest.getSession ();

Итак, допустим, я хочу создать небольшое приложение для чата (imречь идет только о серверной части), и давайте скажем, что есть только два сервлета:

  • WebSocketServlet для получения и пересылки сообщений чата другим пользователям, которые находятся в той же комнате чата.Здесь есть URL / сервлеты / чат
  • . Кроме того, есть второй «нормальный» HttpServlet, называемый AvatarServlet.Функциональность этого сервлета довольно проста: этот сервлет обрабатывает события HTTP POST, чтобы позволить текущему пользователю загружать и изменять свое изображение аватара.URL-адрес / servlets / avatar

Таким образом, сервлет аватара должен обрабатывать HTTP POST только в том случае, если пользователь вошел в систему, что для меня означает, что у пользователя есть действительный HttpSession (конечно, тот же HttpSessionкак сервлет чата).

Мой вопрос: допустим, что пользователь общается в течение 1 часа с помощью сервлета чата, и после этого решает изменить свою аватарку через мой сервлет аватара.Поскольку я работаю с веб-сокетами, страница никогда не перезагружается, и сервлет чата вызывался только в начале (1 час назад) для установления соединения с веб-сокетом.

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

Верно ли мое предположение?Кто-нибудь имеет опыт работы с этой темой или знает лучшее решение?

Спасибо

1 Ответ

1 голос
/ 04 января 2012

Вы можете отправлять ajax-запрос каждые x минут, который не содержит ничего, кроме идентификатора сеанса и, таким образом, в основном «касается» сеанса. Таким образом, пока у пользователя открыто окно чата, сеанс сохраняется. Когда окно чата закрыто, время сеанса истекает.

...