如何确定某个用户(不是current_user)是否在restful_authentication中处于联机状态?

时间:2010-08-07 03:19:31

标签: ruby-on-rails restful-authentication

我必须知道用户是否在线,不是当前经过身份验证的用户,而是任何其他用户。 restful_authentication是否有一些方法可以确定它?

2 个答案:

答案 0 :(得分:2)

了解某人是否在线(并查看您的网站)的唯一方法是与她建立开放式连接。但是,在加载页面后,关闭了与服务器的HTTP连接,并且客户端在想要查看其他页面之前不会再次与您的服务器通信。

鉴于此,您可以执行以下操作:

  1. 假设客户在上次申请页面后的x分钟内“在线”,请猜猜客户是否还在那里。
  2. 让客户端使用Javascript定期向服务器发送“心跳”,然后应用1。
  3. 实际上,客户端使用Comet之类的东西与您的服务器保持持久连接,这将为您提供最准确的结果。
  4. 最合适的取决于您需要状态的准确程度。

答案 1 :(得分:0)

如果您的用户登录,则可以向用户表添加一列,如

rails g migration add_online_to_users online:boolean

每次用户开始新会话时,您都可以使用“true”

填充该列
user.online = true

当用户退出时,您可以输入

会话中的

user.online = false销毁方法