Given you don't want to change the site's session timeout..
Set a timeout/interval (< 15min) event in javascript and decide what to do when the event triggers. If you want the session to be active as long as the page is open, then fine, keep pinging every < 15 min. But that's probably not what you want as a user leaving a public computer should get logged out at some point.
You could maintain a variable lastActivity
, which is updated on each document mousemove or document keydown. If there's been any activity since last ping, ping again.
To get more sophisticated, you could count the events and ping the server only if number of events > threshold at timeout.
The basic example:
setInterval(function(){
$.get('/ImStillAlive.action');
}, 840000); // 14 mins * 60 * 1000
With basic check for typing activity:
$(function(){
var lastUpdate = 0;
var checkInterval = setInterval(function(){
if(new Date().getTime() - lastUpdate > 840000){
clearInterval(checkInterval);
}else{
$.get('/ImStillAlive.action');
}
}, 840000); // 14 mins * 60 * 1000
$(document).keydown(function(){
lastUpdate = new Date().getTime();
});
});