目前正在设置我正在使用的应用程序,即当用户首次与表单进行交互时,会创建一个会话,其过期时间为15分钟,
此外,会话是在服务器端设置的。
15分钟后,并且如果用户空闲(未与表单交互),服务器将返回404并注销用户。
现在需要的是一个警告,提醒用户距离超时20秒。
我的想法是轮询端点,以获取有关会话到期时间的信息,并在20秒后提醒用户。
我的问题是2倍,应该多久调用一次端点?
我认为至少每20秒
而且,当我第一次尝试这种方法时,我担心会出现性能问题,如果有很多用户在轮询,这会不会造成延迟,等等?
只需要有经验的人的意见
答案 0 :(得分:1)
轮询并不是什么新鲜事物,并且经常被使用。一切都取决于您的服务器及其负载。我建议,因为您完全可以知道会话将持续多长时间,因此可以使服务器返回诸如expiresAt
之类的值,该值将告诉您会话何时超时,基于此,您可以在前端显示警告而无需甚至不必为此轮询后端。
答案 1 :(得分:1)
您需要AJAX轮询才能发送请求。每1分钟= 60000ms,它将检查鼠标是否仍在移动(供应商在那里)。
function polling(){
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log('done');
}
};
xhttp.open("POST", "server.php", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send();
}
var timeout;
document.onmousemove = function(){
clearTimeout(timeout);
timeout = setTimeout(function(){
polling();
}, 60000);
}
和服务器端都在您的server.php中
<?php
session_start();
session_destroy();
header("Location: home.php");
?>
它将破坏所有会话,客户端将注销所有点击。