Google / Facebook如何知道哪些用户当前登录?

时间:2011-12-11 14:58:41

标签: chat

这无疑是一个可怕的问题,但我的搜索结果被大量隐私问题堵塞:在高层,有人可以向我解释我如何检测哪些用户当前登录到我的网站? (我碰巧正在为学校项目构建一个Facebook克隆,如果这有助于构建问题。)

6 个答案:

答案 0 :(得分:1)

实际答案将取决于您用于创建网站的框架,但总的来说,浏览器可以与Web服务器保持开放连接,从而实现双向通信。这有时被称为COMET。

Facebook等,然后可以跟踪它具有哪些打开的连接,以及登录的用户,以及发起连接(使用它用于跨请求维护用户状态的相同会话技术)。

答案 1 :(得分:1)

我实际上还没有研究过它,但我认为无限期挂起的HTTP请求会在某人关闭页面时关闭。您可以通过使用此类请求在用户关闭页面时进行轮询来使用此功能。

替代方案:使用AJAX每隔10秒轮询一次新消息,并简单地说用户在15秒内没有轮询时就会消失。

然而,当用户退出页面时,实时检测 一直是个大问题。

答案 2 :(得分:1)

您可以在每分钟检查一次的网页中添加Javascript心跳,如果您在几分钟内没有收到他们的消息,那么就假设他们已经退出。否则,如果您的站点是基于会话的,则假设它们在会话到期时已注销。

答案 3 :(得分:1)

那么,当用户登录您的网站时会发生什么?在服务器端创建会话,将用户的未来请求链接到登录。这必须发生,因为HTTP本身是无状态的 - 也就是说,它不会知道现在请求其个人资料页面的人与刚认证的人相同,除非您让客户端发回一些信息,通常是cookie或,现在不那么频繁,URL中的会话ID。

这意味着在服务器的某个位置,您已经掌握了有多少人登录的信息(即拥有当前会话)。如果您使用的是Web框架,则可能需要查看其会话管理的详细信息。如果你不是,你已经解决了问题;只需找出存储会话的位置,瞧,哪些用户在线。

当然,你不知道用户是否在没有退出的情况下离开了,但这是一个不容易解决的问题;会话管理系统通常在给定的一段时间不活动后使会话到期(即您的服务器最近没有收到任何请求),因此您可以选择系统告诉您开始的任何内容。如果您想要更多内容,您可以自己跟踪上一个活动,并确定用户在过去活动时间超过n分钟时处于非活动状态。

答案 4 :(得分:-1)

当用户登录您的站点时,您将其活动记录到数据库中。然后,你去检测他们在网站上的活动。如果他们闲置了一段时间(例如他们的最后一次活动是10或15分钟前),您可以假设他们处于离线状态。

答案 5 :(得分:-1)

最简单的方法是通过IP。

您的网站的每个请求都将通过IP地址请求。您的主(索引)文件必须具有在某处存储此信息或将其显示给您的逻辑。

这是查找当前正在查看您网站的人的最简单方法。