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