javascript - 检查用户是否在线

标签 javascript php ajax

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

最佳答案

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

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

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

每当您登录时,通过在 map 中查找跟踪器的 ID 来获取跟踪器的新随 secret 钥

tracker[userId].Add(random);

每当用户从任何地方注销时,都会清除跟踪器 key

tracker.remove(userId)

现在,当我们从 AJAX 进行定期调用时,如果跟踪器映射不包含 userId,则意味着他已从某个位置注销。

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

关于javascript - 检查用户是否在线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051865/

相关文章:

javascript - 使用 ajax 将集合填充到 UI

php - 如何解决用户打开无数标签页导致服务器泛滥的问题?

php - 在 html 中使用 php 来显示数据库

php - 如何获取更新以仅影响一行(PHP/MySQL)

JavaScript 弹出框无法正常工作

javascript - .done() 无法读取未定义的属性

php - 如何调用ajax中的函数到php函数并等待响应

javascript - 在新窗口中显示部分页面

javascript - 在幻灯片 JavaScript 方面需要帮助

javascript - jquery.width() 和 jquery.height 有时会出错