grails中的在线离线状态实现

时间:2012-07-08 09:51:16

标签: grails status

我如何实现检查功能,用户是否在线或离线使用grails?我可以在db中使用status字段并在每个auth时间更新字段的值,或者我必须使用一些js的东西?也许你知道一些关于它的导师?

2 个答案:

答案 0 :(得分:3)

让我们说在线用户是至少在10分钟前申请过申请的用户。因此,您可以为用户域创建特殊字段,例如:

User {
  Date lastSeenAt

  static transients = ['online']

  boolean isOnline() {
     return lastSeenAt && lastSeenAt.after(new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10))
  } 
}

并定期在过滤器或控制器内更新它:

User user = //...   
if (!user.lastSeenAt || user.lastSeenAt.before(new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(5))
  user.lastSeenAt = new Date()
  user.save()
}

可能你不应该在每次请求时都更新它,只有在上次更新时才进行更新,在此示例中为5分钟。这个值可以更低,取决于你喜欢的精度。

答案 1 :(得分:0)

通过检查用户的最后一项活动,很多地方都是这样做的。如果从现在起和最后一个活动之间的时间达到某个点,则用户被标记为脱机。