This message is related to an original thread "Link to Wicket page from Javascript" but the focus is changed so much that I though a new title would be better. In the earlier thread I asked about linking to a Wicket page, but the real need was for help in implementing a session timeout that would send the user to a timeout page after a period of inactivity and would reset whenever a user clicked any button on the page.
Ernesto Reinaldo Barreiro sent me links(see below) to a working demo that did exactly what I required. I used that code and everything seemed to work perfectly. However, I have since discovered that my timer does not seem to function correctly if the user goes to another tab. It seems like the timer stops timing down or slows way down until the user comes back to the original tab. I checked Ernesto's demo. If I go to the demo page and stay there it times out after roughly the defined 10 second timeout period, but if I go to the demo page, then click on another tab, it eventually times out, but after more than 3 minutes. My code, however, never seems to seem to timeout the page if I go to another tab. I really need this to work to fulfill a requirement and it is preventing the launch of our software. It all works fine except if the user goes to a different tab. Ernesto, or anyone, do you know why this is happening. Is the ajax timer stopping when the tab is not selected? Why is the demo eventually timing out while application is not (can't see any real difference in the code)? Is there any way to get a better handle on this (e.g., firebug)? If the ajax timer is stopping, could something be done, perhaps using absolute elapsed time, to expire the session immediately if the user goes back to the tab? The latter is not ideal but might be acceptable. (Note: My session timeout in web.xml is 30 minutes, client timeout is 15 minutes, but for testing I set it to 10 seconds). // Links Demo of Example http://107.170.4.97:9080/client-sign-out-demo/?0 Code that sets up example https://github.com/reiern70/antilia-bits/blob/master/client-sign-out-paren t/client-sign-out-demo/src/main/java/com/antilia/HomePage.java Code that provides the implementation (We have this code in package com.xyzco.web.docs.presentation.helpers.timeout) https://github.com/reiern70/antilia-bits/tree/master/client-sign-out-paren t/client-sign-out-demo/src/main/java/com/antilia Thanks, Bruce -----Original Message----- From: Bruce Lombardi [mailto:[email protected]] Sent: Monday, March 17, 2014 8:24 AM To: [email protected] Subject: Re: Link to Wicket page from Javascript Thanks, this is very helpful. Bruce Sent from my iPad > On Mar 17, 2014, at 4:52 AM, Ernesto Reinaldo Barreiro <[email protected]> wrote: > > You can see it at work here > > http://107.170.4.97:9080/client-sign-out-demo/ > > > On Mon, Mar 17, 2014 at 9:18 AM, Ernesto Reinaldo Barreiro < > [email protected]> wrote: > >> Martin, >> >> What I mean is something that triggers the sign out before serve side >> session expires... and trigger this expire event. >> >> >> https://github.com/reiern70/antilia-bits/blob/master/client-sign-out- >> parent/client-sign-out/src/main/java/com/antilia/signout/InactivitySi >> gnOutPanel.java >> >> https://github.com/reiern70/antilia-bits/blob/master/client-sign-out- >> parent/client-sign-out/src/main/java/com/antilia/signout/InactivitySi >> gnOutPanel.js >> >> The above seem to work. You use it as in >> >> >> https://github.com/reiern70/antilia-bits/blob/master/client-sign-out- >> parent/client-sign-out-demo/src/main/java/com/antilia/HomePage.java >> >> >> >> >> On Mon, Mar 17, 2014 at 9:11 AM, Martin Grigorov < <mailto:[email protected]> [email protected]>wrote: >> >>> Hi, >>> >>> On Fri, Mar 14, 2014 at 9:25 PM, Ernesto Reinaldo Barreiro < >>> [email protected]> wrote: >>> >>>> Hi, >>>> >>>> I would implement this as.. >>>> >>>> 1- A JS function that counts how much time has passed since last >>>> AJAX request. Once a certain threshold is passed an AJAX request is >>>> sent to >>> the >>>> page. >>>> 2- An AbstractAjaxBehavior that is added to the page. I would use >>>> it as context for AJAX request on 1). >>> >>> at that time the session should be already expired. >>> >>> But this can be used to do what is needed here - Wicket will >>> redirect to the configured PageExpiredErrorPage. >>> >>> >>>> 3- On the respond of AJAXBehavior you redirect to >>>> SessionTimeoutPage >>> and >>>> invalidate the session. >>>> >>>> >>>> >>>> On Fri, Mar 14, 2014 at 8:07 PM, Bruce Lombardi >>>> <[email protected]> >>>> wrote: >>>> >>>>> Hi, >>>>> >>>>> >>>>> >>>>> An earlier question I asked about session timeouts was answered by >>> Martin >>>>> Grigorov. I am implementing his suggestion and have a JQuery >>>>> script >>> what >>>>> sets a timer that times out after a certain period of inactivity. >>>>> The timeout triggers a function call. Currently, for a quick >>>>> test, I >>> have >>>>> that function use location.href to go to an arbitrary static web >>>>> page >>>> like >>>>> this: >>>>> >>>>> >>>>> >>>>> function whenUserIdle(){ >>>>> >>>>> location.href = >>>>> 'http://www.natural-environment.com'; >>>>> >>>>> } >>>>> >>>>> >>>>> >>>>> That works fine, but now I need to make it go to a Wicket page in >>>>> my application, similar to what would happen if I had an anchor >>>>> tag like: >>>>> >>>>> >>>>> >>>>> <a wicket:id=" SessionTimeoutPage" href="#">SessionTimeoutPage</a> >>>>> >>>>> >>>>> >>>>> But I can't figure out how to do this in the javascript function. >>>>> Can anyone tell me how to call the Wicket page from the javascript >>>>> function? >>> >>> You can use <script wicket:id="expirationUrl"></script> and a >>> Label("expirationUrl", "window.expirePageUrl ='" + >>> urlFor(SessionTimeoutPage.class) + "';"); Then use it with: >>> location.href = window.expirePageUrl'; >>> >>> >>>>> >>>>> >>>>> >>>>> Thanks, >>>>> >>>>> >>>>> >>>>> Bruce >>>> >>>> >>>> -- >>>> Regards - Ernesto Reinaldo Barreiro >> >> >> >> -- >> Regards - Ernesto Reinaldo Barreiro > > > > -- > Regards - Ernesto Reinaldo Barreiro
