0

一个快速的背景。

我们正在运行一个 ejabberd 服务器,连接到它的用户群相当大(700k+ 用户)。我们遇到了一个问题,mnesia 无法处理名册大小,因此我们决定使用 Web 界面,在用户登录/注销时为用户添加和删除名册条目。这种方法的问题在于它延迟了他们的登录,这是我们无法做到的。为此,我们的工作是让名册请求进入延迟任务表,该任务表将被 cron 拾取并添加条目。然后我们遇到的问题是数据库中条目堆积的速度超出了处理它所花费的时间。测试表明这不是脚本,而是来自 ejabberd 服务器的实际响应时间。

在此之后,我们决定将名册从内部 menesia DB 移动到 mysql。通过这样做,我们可以直接从数据库中插入/删除名册条目,这对 ejabberd 服务器没有影响。

我已经成功地为用户添加和删除了名册条目,并且它们成功地显示在 Web 界面中。

现在解决问题:在我添加了互惠花名册条目后,我需要告诉用户此人在线,以便他们在 Web 界面中在线显示。目前,在我添加了名册条目后,用户只是显示为离线。

据我了解,这应该是一个相当简单的出席请求,但我无法让它工作。是否有一个模块,或者一种发送出席请求的简单方法,以便让您在您的名册中的人知道您在线,并且也是一种快速探测您自己的名册的方法。

任何帮助表示赞赏。

4

1 回答 1

2

您还需要发送相关的 <presence/> 节以将名册更新传播给客户端。

您应该阅读 RFC 的相关部分,此处链接很方便:

http://xmpp.org/rfcs/rfc3921.html#int

于 2011-03-08T09:30:12.600 回答