我需要从ajax请求中获取有关以某种方式仍然在线的用户的电话。 也许我应该创建一些json方法,它将接管这个请求并更新db.User.IsOnline为true / false;我需要检查一下,因为当用户的会话结束时,标志'isOnline'不会切换。 我意识到它应该如何工作,但我在ajax中很糟糕。所以,请告诉我我应该做什么。
答案 0 :(得分:1)
如果您想要“正确”(至少比下面的更好的方式)并且您可以负担得起使用NodeJS服务器,那么套接字将帮助您。由于实时功能,您将能够创建一个事件监听器,当用户因任何原因断开连接时,您将被告知它并相应地更新您的数据库。请查看以下内容:
现在,如果你买不起实时解决方案,那么有各种各样的,但不是那么好的解决方法。最简单的方法是在您的客户端上创建一个Interval,它会在每xxx个时间内在您的服务器上发送一个“信号”,该信号将指示该用户在您的站点上。你几乎会对服务器说“嘿,我还在这里”。如果您没有收到xxx时间的信号,则该用户不在线。
示例: 每1分钟(60秒)运行一次信号
var mySignal = setInterval(function(){
$.ajax({url: "myServer.php?action=keepalive", success: function(result){
console.log('all good');
}});
},60000);
每次收到用户的“keepalive”操作时,都会使用当前时间戳更新数据库。现在,如果您每隔60秒进行一次呼叫,则立即意味着如果您在数据库中看到一个尚未更新超过60秒的时间戳,则该用户不在线。
答案 1 :(得分:0)
为在线用户创建一个表。 当用户登录时,将该用户ID插入在线表。 然后你使用内部联接查询检查用户是否是你的朋友,例如,如果你是朋友,那么id就是你的朋友,如果是这样的火选择查询,只要你想要填充网格视图就可以显示它。 当用户注销时删除该用户id的条目。所以你会对网格视图产生影响 你的哪位朋友在线或不在线。