Тайм-аут сеанса JSF и отправка простых лиц

У меня установлен тайм-аут сеанса в web.xml

<session-config>
<session-timeout>1</session-timeout>
</session-config>

и отследить его с помощью моей реализации HttpSessionListener. Я протестировал и вижу создание и уничтожение каждой сессии - все работает нормально.

Но после добавления служб push-уведомлений в мое приложение и т. д.:

xhtml:

<p:socket channel="/chat-notif">
    <p:ajax event="message" global="false"
        update="label-chat-new-msg  :f_chat_list :form-chat-conversation" />
</p:socket>

фасоль:

EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish(PUSH_CHAT__MESSAGE, "new-msg");

ресурс:

@PushEndpoint(ChatController.PUSH_CHAT_MESSAGE)
public class ChatMessageResource {

    @OnMessage(encoders = { JSONEncoder.class })
    public String onMessage(String finis) {
        return finis;
    }
}

Сеанс никогда не имеет тайм-аута, так как отправка через периодический интервал связывается со страницей клиента и обновляет таймер простоя сеанса, даже когда пользователь не взаимодействует со страницей.

Как мне избежать обновления сеанса lastAccessedTime в push-сообщениях?

ПФ 5.0, Мохарра 2.2.5

Спасибо!


person Helija    schedule 10.06.2014    source источник


Ответы (1)


Обнаружена причина обновления таймеров сеанса: в каждом push-сообщении ajax запускает метод backingbean, поэтому обновляется сеанс lastAccessedTime. Перейдите на чистое кодирование на стороне клиента для push-сервисов:

    <p:socket onMessage="handleChatNotif" channel="/chat-notif" />
    <script type="text/javascript">
        function handleChatNotif(data) {
        $('.displayChatNotif').html(data);
        }
    </script>

<h:outputText styleClass="displayChatNotif" id="label-chat-new-msg" value="#{chatController.chatNotifications}" />

Теперь все происходит на стороне клиента, и запрос на веб-сервер не отправляется, время ожидания сеанса истекло регулярно.

person Helija    schedule 11.06.2014