0

我有一个从Ajax Chat获得的内联聊天应用程序,它运行良好。该应用程序允许用户与在系统上注册的用户聊天。IE:这是用户列表

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

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

谢谢你

4

4 回答 4

1

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

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

它可能不是最好的系统,但它可以工作,并且可能对您有所帮助。

于 2012-11-06T10:37:18.880 回答
0

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

于 2014-07-16T00:36:34.333 回答
0

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

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

于 2013-07-17T11:35:11.483 回答
0

我要做的是让客户端运行一个脚本来执行 ajax 调用,以更新数据库中的条目,并带有最后一次看到的时间戳。不要太频繁,否则你会超载你的服务器。

如果你真的想获得技术并做一个离开状态,你还可以在它检查击键、鼠标移动以及窗口是否处于活动状态的地方放置一些 if 语句。

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

于 2016-11-16T22:30:39.427 回答