ejabberd 上所有用户的最后活动

Posted

技术标签:

【中文标题】ejabberd 上所有用户的最后活动【英文标题】:Last activity for all users on ejabberd 【发布时间】:2015-07-07 05:10:32 【问题描述】:

我们的服务器上安装了 ejabberd。

我正在使用 asmack 4.0.7 与 ejabberd 服务器交互。

我想知道所有用户的最后一次活动(XEP-0012)。

我在我们的服务器上有 10 个用户帐户。即 john@myserver.in、mike@myserver.in、jerry@myserver.in 等

ejabberd 的行为是要查找用户的最后一个活动,该用户必须登录。我的意思是检查 john@myserver.in 的最后一个活动,他必须登录。

如果我以 john@myserver.in 身份登录,那么我将成功获取 john@myserver.in 的最后一个活动。 john 登录后,如果我检索 mike@myserver.in、jerry@myserver.in 或任何其他用户的最后活动,我会收到 ejabberd 服务器的 service-unavailable 响应。

<iq from='mike@myserver.in/Smack' to='john@myserver.in/Smack' type='error' id='uHn-5'> <query xmlns='jabber:iq:last'/><error code='503' type='cancel'> <service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> </error></iq>

我的要求是在不为所有用户登录的情况下检索最后一个活动。

这可能吗?

如果此查询需要任何其他信息,请告诉我。

谢谢

【问题讨论】:

【参考方案1】:

如果您想要所有用户的最后一个活动,这可能用于后端任务。您不应该使用 XMPP 客户端协议来执行此操作,而应使用后端模块(ejabberd 插件或从最后一个数据库读取)。

【讨论】:

Mickaël,感谢您的宝贵反馈。在类似的行中,我想知道,如果我将查询从上次活动 (XEP-0012) 更改为所有用户的离线消息存储 (XEP-0160),答案是否相同。我想知道所有用户的离线消息存储(XEP-0160)。 ejabberd 的行为是要知道用户的离线消息,该用户必须登录。我的意思是检查 john@myserver.in 的离线消息,他必须登录。我的要求是在没有离线消息的情况下检索离线消息为所有用户登录。 是的,相同的注释 XEP-0160 定义客户端行为而不是后端处理。没有“客户端”会检索每个用户的所有离线消息。您需要以完全不同的方式设计解决方案。 Mickael iam 总是最后一次看到是 9223372036854775807 这是我的代码,请帮助我***.com/questions/41312742/… @MaheshNarla 你找到解决方案了吗我也收到了 9223372036854775807

以上是关于ejabberd 上所有用户的最后活动的主要内容,如果未能解决你的问题,请参考以下文章

无法打开 ejabbered Web 仪表板 localhost:5280

Python 和 EJABBERD/XMPP [关闭]

ejabberd 两个同名函数

如何启用用户注册 - eJabberd for mac?

ejabberd MUC 未通知新消息

如何在 ejabberd 中获取图像的缩略图