与我的案例最接近的示例是 Django ajax 聊天应用程序。房间需要保留一个活跃用户列表。除了在聊天中显示该用户列表外,给定房间可能有最大数量的活跃用户;如果没有空间,需要阻止新用户进入。
目前,我有聊天客户端页面通过 ajax 每秒调用一次投票视图。投票视图返回房间的文本。我认为 poll 也可以执行某种类型的 ping - 将用户添加到 Room 对象上的 active_user M2M 字段(到目前为止,我已经完成了所有这些)。我接下来需要的是在某种超时后将用户从该 active_user 列表中删除。
我想有两种方法可以做到这一点,我想知道对于需要精确到秒(或十/十五秒)的应用程序来说,哪种方法更有效:
- 在这个线程中使用 cookie/会话/中间件(但在我看来,这种方法不适用于即时信息
- 另一个模型,例如一个明确的 Users_Rooms 'through' 表,其中包含一个 datetime 字段,用于在创建时更新时间以及每次 ping 之后,并编写一些函数来清理旧的
这就是我能想到的。我只是想弄清楚每个房间的每个用户每秒都点击 mySQL 是否是一个好主意,并且想知道那一秒是否确实是该任务的最佳选择。谢谢!