2012-11-08 54 views
1

我必须实现聊天室和该房间中的用户列表。 我会用mysql + memcache来做到这一点。 当用户进入或离开房间时,会更新房间内的用户数组。 但是,我们已经自动注销该网站上,所以不活跃用户登录时,他们处于非活动状态30分钟,这是现在一个问题:聊天室在线用户列表执行

我不能刷新室的用户列表中,因为我不不知道,什么时候发生自动注册。 我们没有用于注销非活动用户的脚本。在主要的在线列表中,它们如下所示: SELECT * FROM users WHERE last_fresh> 1352415100 我们的在线列表不显示用户在30分钟以内不活动,但我无法存储和更新last_fresh时间每次在房间中的用户阵列,当该房间中的每个用户刷新页面时。

我该怎么做?

回答

0

取决于您是否要推或拉更改。推送始终是首选,但会采用nginx-push-module或其他服务器端技术。拉动确实更容易,但会造成更多的开销。

如果您正在拉动,您可以轮询登录用户的列表并根据数据刷新房间列表。更新视图的ajax调用将完成此操作。看看jQuery或原型。

+0

我想拉列表。我不知道,什么时候在服务器上刷新该列表。当他们进入房间时,我将用户添加到列表中,并在他们退出时删除他们。但是何时删除用户,即更改为已注销状态 - 无需退出房间? – heal81

+0

取决于你如何存储当前用户?如果使用轮询,则可以在轮询时刷新其时间戳,并且仅在<30分钟前才能获得刷新的人员。 – Michael

+0

好的,但这样我必须从数据库中获取完整列表。我怎样才能避免这种情况?我只想获取更改。谢谢 – heal81