JSF会话超时和主面推送



我在web.xml中设置了会话超时

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

并使用我的httpessionlistener实现跟踪它。我测试并看到每个会话的创建和销毁-它工作得很好。

但是,在我的应用程序中添加推送服务后,等:

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

谢谢!

发现更新会话计时器的原因:在每个推送消息上,ajax触发backingbean方法-这就是为什么会话lastAccessedTime被更新。将推送服务更改为纯客户端代码:

    <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}" />

现在一切都发生在客户端,没有请求被发送到web服务器,会话超时定期过期

相关内容

  • 没有找到相关文章

最新更新