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