我想创建一个用户状态系统,我想在我的数据库中有一个名为 datetime 的字段last_active
,并使用当前时间使用 ajax 自动更新该字段。
然后我检查last_active
和当前时间之间的分钟数..来判断用户是否在线、不活动和离线..
这是一个很好的技术吗?例如,如果用户打开了网站但正在做其他事情,会发生什么?
只有当用户正在查看页面时,有没有办法触发 ajax 请求?
你目前的方法是一个很好的技术,也是要走的路,
您可以使用 jquery 检查focusin
并focusout
使用 jquery 来检查用户当前是否在文档上处于活动状态,
$(document).ready(function(){
$([window, document]).focusin(function(){
// start the ajax requests
}).focusout(function(){
// stop the ajax requests
});
});
您应该采用将设置为函数的变量,并将设置为true
函数。现在 continue ajax 请求函数只有在变量设置为.focusin
false
focusout
true
这是检查活动的好方法。您可以仅在页面处于焦点时触发 Ajax 请求。我会考虑使用 mousemove 事件或类似事件,但模糊/焦点事件也可以证明是有用的。
当 mousemove 事件被触发时,true
在执行 Ajax 请求之前设置一个变量并检查该变量。不要忘记false
在每次 Ajax 调用之间将其重置。