在Django中实现聊天的最佳实践(存储在线用户)

时间:2010-11-16 09:08:27

标签: javascript jquery html django chat

我正在Django中实现聊天系统。

我在决定如何创建决定谁是在线用户的模型时遇到了一些麻烦。我看到两个问题:

  1. 您无法确定用户何时下线
  2. 我希望“用户”轻量级(无需登录),这意味着我不想使用Django的用户系统。
  3. 有关如何对此进行建模的任何建议?

2 个答案:

答案 0 :(得分:1)

将此信息存储在缓存中。这是短暂的,它不属于长期数据库,访问需要非常快。

您不需要存储大量信息来处理聊天会话,因此将其存储在用户的会话中(您可以使用匿名的非登录用户执行此操作,然后从“真实”中提取信息)如果他们碰巧登录了用户表,那么这是正确的方法,只要您使用纯缓存会话后端和memcached之类的东西。

答案 1 :(得分:0)

我同意Pail McMillan的回答,即使用缓存是正确的方法。在过去,我使用Django's low level caching API只允许您集中存储键值对。

我不确定这会有多高效,但你可以简单地存储一个以逗号分隔的当前在线用户ID的字符串:

from django.core.cache import cache

cache.set('users-online', '4,6,12,34')

然后:

for user_id in cache.get('users-online').split(','):
    user = User.objects.get(pk=user_id)
    # do something with the user ...