Времето за изчакване на сесията на JSF и натискане на primefaces

Имам зададено време за изчакване на сесията в 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 при насочени съобщения?

PF 5.0, Mojarra 2.2.5

Благодаря!


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


Отговори (1)


Открих причината за актуализиране на таймерите на сесиите: При всяко насочено съобщение 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