我需要显示哪些用户在线进行我的AJAX聊天

时间:2012-11-06 10:22:20

标签: php ajax json chat

我有一个内联聊天应用程序,我从Ajax Chat获得,它的工作非常出色。该应用程序允许用户与在系统上注册的用户聊天。即:Here is a list of the users

现在我需要显示用户是在线还是离线。

所以我的问题是如何使用PHP显示在线用户?

谢谢

4 个答案:

答案 0 :(得分:1)

基本上您需要的是一种注册用户活动的方法。

您可以通过PHP中的会话执行此操作,然后记录这些内容。有很多方法可以在日志中注册您的活动。如果活动未在例如5分钟内更新,则用户处于脱机状态。从某种程度上说,你只需要一个sessionId和一个时间戳(我建议这也挂起到用户ID)。如果是离线,则没有分配userId,在线时添加userId。如果你有那些,它很容易。它是一个在加载新页面时不断更新它们的问题,如果它们注销,你只需要销毁会话,或者更新它以便它不会链接到用户。

它可能不是最好的系统,但它有效,它可能对你有帮助。

答案 1 :(得分:0)

我不知道你的具体需求。对不起,如果我错了。

如果Jabber支持使用Ajax Chat,为什么不尝试使用ejabberd类型的XMPP服务器而不是自己重新发明轮子。你也可以看看Apache Vysper,因为它也支持扩展模块。如果XMPP服务器在那里,用户在场处理和消息传输将成为一个蛋糕步行。

答案 2 :(得分:0)

您需要的是不断更新数据库中的表,以保存用户的最后一次更改并保存日期时间...因此,如果该日期超过5或10分钟,则用户可以关闭..你可以用ajax来做...

答案 3 :(得分:0)

我要做的是有一个脚本,客户端运行该脚本来执行ajax调用,以使用上次查看的时间戳更新数据库中的条目。不常用,否则您的服务器会过载。

你也可以在if语句中检查键击,鼠标移动以及窗口是否处于活动状态,如果你真的想要获得技术并处于离开状态。

然后在活动聊天中,只需检查活动消息的时间戳或用户列表打开时。超出可接受范围的任何内容都会将用户显示为离线。 5分钟对我来说似乎很长。可能每10秒轮询一次支票?