要求用户在线

时间:2016-03-17 04:45:12

标签: javascript php ajax

如何使用Ajax持续检查用户是否在线(无需重新加载页面)?有时用户在两个不同的选项卡中打开了他的个人资料,并且他从一个标签中注销,因此另一个标签会立即显示登录页面...

2 个答案:

答案 0 :(得分:1)

至于检查此人是否在线,您可以使用许多技术,如长轮询,Web套接字和最简单的技术,定期检查运行一个脚本的服务器。

对于其他部分,它可以在服务器端完成,您需要维护某种内存映射(如果您只有一个Web服务器,否则您必须存储在数据库中),其中包含登录的用户ID和一些登录时由客户端代码生成的随机密钥

Map<string,List<string>> tracker = new Map<string,List<string>>();

每当您通过在地图中找到他的ID

来登录跟踪器的新随机密钥时
tracker[userId].Add(random);

每当用户从任何地方注销时清除跟踪器密钥

tracker.remove(userId)

现在我们正在定期调用AJAX,如果跟踪器地图不包含userId,则意味着他已从某个地方退出。

if(!tracker.Contains(userId))
     //user is logged out from some other place

答案 1 :(得分:0)

创建代码以检查状态是否存在sesstion返回ture并且如果没有返回false 然后在每个页面中使用jquery ajax调用该页面检查状态并使用get方法并检查该页面中的返回数据 如果它是真的那么用户仍然插入,如果为false则用户注销并且settimeout为你的ajax代码5秒