实际上,我们正在将ejabberd服务器用于我们客户端的一个聊天应用程序。除了群聊之外,一切都运行得很好。
我们正在使用MUC进行群聊,但无论何时使用离线,它都不会向成员发送消息。有没有其他的插件或者我们可以让它工作的东西?
或者任何人都可以建议如何从群聊历史记录中接收该用户的离线消息。
提前感谢
发布于 2014-03-12 23:07:01
这是因为多用户聊天室没有这样的概念。事实上,如果你再仔细考虑一下,你就会明白为什么:
那么,究竟哪些用户当前不在MUC房间中,服务器应该将消息存储在脱机存储中?我的意思是,在一般情况下,服务器并不知道在它托管的给定房间中可能聊天的所有用户。
(好吧,如果这是唯一的问题,我必须承认,它可能适用于仅限成员的房间。)
显然,这也是为什么"MUC房间离线存储“这种想法没有意义的另一个原因。根据定义,
这实际上是不支持离线存储的最重要原因。
如你所见,XMPP MUC房间很像IRC的类固醇聊天。
因此,您真正想要的是"room history"-a,它是XMPP-0045扩展的一部分,它允许客户端显式地向房间请求他们错过的消息历史记录。在某种意义上,代替为每个用户存储离线消息,聊天室可以被配置为仅存储发送给它的特定数量的最新消息(或在给定时间段内的所有此类消息)。则房间支持按加入用户查询这些消息。
您可以探索另一种可能性:XEP-0033的"multicast addressing" (“扩展节寻址”)。基本上,它允许客户端使用特殊的多播服务一次将其消息发送给多个接收者。好处是离线存储又出现了。缺点是,我怀疑ejabberd是否支持这种开箱即用的组播服务,而且似乎该扩展留下了许多细节,关于如何实现它没有具体说明。
https://stackoverflow.com/questions/22352864
复制相似问题