检查用户是否在线

Cheking a user to be online

本文关键字:在线 是否 用户 检查      更新时间:2023-09-26

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

至于 检查此人是否在线 ,您可以使用许多技术,例如长轮询,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

创建代码以检查状态是否存在 sesstion 返回 ture 以及如果没有返回 false然后在每个页面中使用 jQuery ajax 调用该页面,在其中检查状态并使用 get 方法并检查从该页面返回的数据如果为 true,则用户仍然登录,如果为 false,则用户注销并设置超时 5 秒