use*_*447 8 chat xmpp ejabberd
实际上我们正在使用ejabberd服务器作为我们客户的聊天应用程序之一.除了群聊之外,一切都很顺利.
我们正在使用MUC进行群聊,但是当用户离线时,它不会向会员发送消息.是否有任何替代插件或我们可以使其工作的东西?
或者,任何人都可以建议如何从群聊历史记录中接收该用户的离线消息.
提前致谢
kos*_*tix 13
那是因为多用户聊天室没有这样的概念.事实上,如果你再多想一想,你会理解为什么:
在任何给定时间,可能存在未绑定的参与者数量.
那么,如果服务器将消息存储在离线存储中,那么对于当前不在 MUC会议室中的用户,究竟是什么?我的意思是,在通用情况下,服务器不知道所有可能在其托管的给定房间中聊天的用户.
(好吧,如果这是唯一的问题,它可能适用于仅限会员的房间,我必须承认.)
MUC会议室不是"仅限本地服务器":来自任意数量的其他服务器的潜在未绑定数量的用户可能加入会议室,并且将通过各自的服务器路由这些用户的消息.
显然,这是为什么"MUC房间离线存储"这样的想法没有意义的另一个原因.
根据定义,MUC房间是短暂的:当用户离线时,他们不在任何房间 - (重新)joninig房间是一个明确的行动.
这实际上是不支持离线存储的最重要原因.
正如您所看到的,XMPP MUC房间很像IRC对类固醇的聊天.
所以你真正想要的是"房间历史" - XMPP-0045扩展的一部分,它允许客户明确询问房间他们错过的消息历史.在某种意义上,不是为每个用户存储离线消息,而是可以将房间配置为仅存储发送给它的一定数量的最新消息(或者在给定时间段内所有这样的消息).然后,房间支持由加入的用户查询这些消息.
还有,你可能会探索另一种可能性:"多播地址"的XEP-0033("扩展节寻址").基本上,它允许客户端使用特殊的多播服务一次将其消息发送给多个收件人.好处是离线存储再次存在.缺点是我怀疑在ejabberd中开箱即用支持这样的多播服务,似乎该扩展留下了很多关于如何实现未指定的细节.
| 归档时间: |
|
| 查看次数: |
8503 次 |
| 最近记录: |