1

我对 Web 开发很陌生,并且正在开发这个社交网站。

现在我想添加功能来显示一个人是否在线。

现在我想出的方法之一是在数据库中保留在线状态位。

我的问题是如何动态地做到这一点。假设页面已加载并且用户(例如连接)上线。如何在该页面上动态更改该连接的状态。

我想知道是否有任何工具(库)可用于这种类型的跟踪。我的网站是在 python 中使用 django 框架。我认为可以使用 javascript/jquery 来完成一些事情。我想知道我是否朝着正确的方向前进,或者还有什么我应该研究的吗?

4

2 回答 2

1

last_activity DateTimeField使用 a和 a OneToOneFieldto创建一个新模型User。或者,如果您是子类化User,使用Userdjango 1.5 中的自定义,或使用用户配置文件,只需将该字段添加到该模型。

编写一个自定义中间件,last_activity在每次请求时自动更新每个用户的字段。

在您的一个模型中编写一个is_online方法,该方法使用 timedelta 来确定用户的不活动期,以返回他们是否在线的布尔值。例如,如果他们last_activity的时间超过 15 分钟,则返回False

编写一个通过 jQuery ajax 轮询的视图,以返回特定用户的在线状态。

于 2012-11-28T17:03:42.643 回答
0

正如 Sanjay 所说,更喜欢使用内存解决方案(在线状态的使用非常短暂),例如 Django 缓存(Redis 或 Memcache)。

如果您想要一种简单的方法来更新已加载网页上用户的在线状态,请使用任何库(如 jQuery、AJAX-poll 提供用户状态的 URL),然后更新显示您的页面的一小部分想要的状态。不要太频繁地轮询这个页面,每 15 秒一次似乎是合理的。

于 2012-11-28T16:54:25.537 回答