我正在尝试使用jquery实现应用程序心跳。
我的更改的想法是,我将应用程序会话超时从30分钟减少到10分钟,但每2分钟(120秒)实现一次jquery应用程序心跳。当浏览器打开时,心跳将避免用户收到应用程序超时,但如果浏览器关闭,则会话应在10分钟内超时。
我使用jquery实现了我的心跳,如下所示......
var heartbeatInterval = 120000; // Send heartbeat every 2 mins
var heartBeatTimer = null;
var retryCount = 0;
var maxRetries = 10;
$().ready(function() {
// register heart beat to the server to keep the session alive.
heartBeatTimer = setInterval(function() {
$.ajax({
url: heartBeatAjaxServletUrl,
type: 'GET',
error: function(data) {
// The server may be down for the night or there may be a
// network blip. As such try to send the heart beat 10 times
// then if still failing kill the heartbeat.
retryCount = retryCount + 1;
if (heartBeatTimer != null && retryCount >= maxRetries) {
clearInterval(heartBeatTimer);
}
},
success: function(data) {
// Once we have a successful heartbeat reset the retry count.
retryCount = 0;
}
});
// When communication with the server is lost stop the heartbeat.
}, heartbeatInterval);
});
当我打开Internet Explorer开发人员工具中的“网络”选项卡时,我可以看到心跳正在运行,但我得到的响应是304而不是200。当我对304进行一些研究时,这个响应代码的解释与http缓存有关。说实话,我有点不确定。
但问题的症结在于,无论心跳如何,浏览器打开时我的用户会话都会超时。我猜这意味着我每两分钟发送的心跳回来并没有真正击中服务器?
有人可以帮我解释一下这里可能会发生什么,以及我的会议是否超时?
感谢