我网站上的用户可以有朋友,朋友可以互相聊天。您还可以将您的状态设置为在线、离开和忙碌。
如果用户不再在网站上,他的状态应该设置为离线。我想最好的方法是定期向服务器发送 AJAX 请求,然后如果服务器停止接收这些消息,则自动将状态设置为离线。
但是,发送这些消息的最佳间隔是多少?5秒?1分钟?
如果它真的取决于网络服务器的能力,有没有办法检查 PHP?一些常用的网络服务器功能的示例间隔是多少?
我网站上的用户可以有朋友,朋友可以互相聊天。您还可以将您的状态设置为在线、离开和忙碌。
如果用户不再在网站上,他的状态应该设置为离线。我想最好的方法是定期向服务器发送 AJAX 请求,然后如果服务器停止接收这些消息,则自动将状态设置为离线。
但是,发送这些消息的最佳间隔是多少?5秒?1分钟?
如果它真的取决于网络服务器的能力,有没有办法检查 PHP?一些常用的网络服务器功能的示例间隔是多少?
然后修改以下内容:
setIdleTimeout(2000); // 2 seconds
setAwayTimeout(4000); // 4 seconds
document.onIdle = function() {$('#div_idle').css('opacity', '1');}
document.onAway = function() {$('#div_away').css('opacity', '1');}
document.onBack = function(isIdle, isAway) {
if (isIdle) $('#div_idle').css('opacity', '0.2');
if (isAway) $('#div_away').css('opacity', '0.2');
}
类似于:
setIdleTimeout(120000); // Make these two
setAwayTimeout(360000); // a lot longer
document.onIdle = function() {
// your ajax calls for when they go
}
document.onAway = function() {
// code here to maybe log them out or what ever you wish to do via ajax.
}
document.onBack = function(isIdle, isAway) {
// code here for when they return
}
这样你就减少了请求。
快速编辑:
关闭浏览器时注销可以通过jQuery.unload()实现:
$(window).unload(function() {
// ajax call when they just go, like they don't even care!
});
这实际上更像是一个可用性/期望问题,而不是编码问题。如果服务器上的负载不是很高,这些甚至都不会引起注意。我怀疑您是否需要每 5 秒检查一次,但这可能是可行的,特别是如果它只是一个用户数量有限的个人网站。在高负载条件下,您可能会使其显着更高。