我对 Web 开发很陌生,并且正在开发这个社交网站。
现在我想添加功能来显示一个人是否在线。
现在我想出的方法之一是在数据库中保留在线状态位。
我的问题是如何动态地做到这一点。假设页面已加载并且用户(例如连接)上线。如何在该页面上动态更改该连接的状态。
我想知道是否有任何工具(库)可用于这种类型的跟踪。我的网站是在 python 中使用 django 框架。我认为可以使用 javascript/jquery 来完成一些事情。我想知道我是否朝着正确的方向前进,或者还有什么我应该研究的吗?
我对 Web 开发很陌生,并且正在开发这个社交网站。
现在我想添加功能来显示一个人是否在线。
现在我想出的方法之一是在数据库中保留在线状态位。
我的问题是如何动态地做到这一点。假设页面已加载并且用户(例如连接)上线。如何在该页面上动态更改该连接的状态。
我想知道是否有任何工具(库)可用于这种类型的跟踪。我的网站是在 python 中使用 django 框架。我认为可以使用 javascript/jquery 来完成一些事情。我想知道我是否朝着正确的方向前进,或者还有什么我应该研究的吗?
last_activity
DateTimeField
使用 a和 a OneToOneField
to创建一个新模型User
。或者,如果您是子类化User
,使用User
django 1.5 中的自定义,或使用用户配置文件,只需将该字段添加到该模型。
编写一个自定义中间件,last_activity
在每次请求时自动更新每个用户的字段。
在您的一个模型中编写一个is_online
方法,该方法使用 timedelta 来确定用户的不活动期,以返回他们是否在线的布尔值。例如,如果他们last_activity
的时间超过 15 分钟,则返回False
。
编写一个通过 jQuery ajax 轮询的视图,以返回特定用户的在线状态。
正如 Sanjay 所说,更喜欢使用内存解决方案(在线状态的使用非常短暂),例如 Django 缓存(Redis 或 Memcache)。
如果您想要一种简单的方法来更新已加载网页上用户的在线状态,请使用任何库(如 jQuery、AJAX-poll 提供用户状态的 URL),然后更新显示您的页面的一小部分想要的状态。不要太频繁地轮询这个页面,每 15 秒一次似乎是合理的。