0

用户可以使用他们的 Google、Facebook 或 Twitter 帐户登录在 Google App Engine 中运行的网站。用户会话已经实现,三个身份验证提供程序(Google、Facebook、Twitter)已经工作。

我的下一个任务是检查用户在查看其个人资料时是否在线。如何实现这一点?如果您有一些想法,请告诉我。

此外,当用户登录该站点时,我将其电子邮件保存到会话中,如下所示:

session.put("email", email);

要考虑的另一件事是用户的会话何时超时。如果用户的会话由于长时间没有在网站上进行交互而自动超时(不使用网站中提供的注销菜单/按钮),我们可以做些什么吗?

使用的框架是 Struts2,在 Google App Engine 中运行。

谢谢。

4

1 回答 1

1

由于 HTTP 是基于请求的,而不是基于会话的,因此无法知道用户是否“在线”——简单地说,HTTP 没有“在线”用户的概念。

执行此操作的过于复杂和高开销的方法是使用 Channel API 之类的东西在用户离开页面(或您的站点)时通知您,但这对于一个简单的功能来说是很多开销。您还可以让用户的浏览器在打开页面时定期对您进行 ping 操作,但这同样会导致大量开销和额外流量。

一种更常见的方法是将针对用户的记录存储在数据存储中(或者仅存储在内存缓存中,如果用户被错误地标记为离线,这不是非常重要的话),记录他们上次加载页面的时间,并在他们获取时更新来自您网站的页面。然后,如果用户在某个合理的时间间隔(例如半小时)内检索到页面,则显示用户为“在线”,否则显示为“离线”。

于 2012-06-26T03:37:01.377 回答