按需获取房间聊天记录

时间:2015-06-23 06:29:18

标签: ios xmpp chatroom muc

来自xep-0045:http://xmpp.org/extensions/xep-0045.html#enter-history 用户似乎只能在加入房间时获取房间历史消息。例如,用户在加入房间时可以收到20条消息。

但是在加入房间后,如果用户想要更多的历史消息,似乎无法实现这一目标。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

最后,我发现MAM可以满足要求 http://xmpp.org/extensions/xep-0313.html#archives_user

我可以获取其他客户端/用户的历史消息,但我仍然无法获取房间历史消息。我发送的iq是:

<iq type='set' id='juliet1'>
  <query xmlns='urn:xmpp:mam:0'>
    <x xmlns='jabber:x:data'>
       <field var='FORM_TYPE'>
           <value>urn:xmpp:mam:0</value>
       </field>
      <field var='with'>
         <value>roomJid@conference.host</value>
      </field>
   </x>
  </query>
</iq>

答案 1 :(得分:0)

我已经解决了这个问题。有两种解决方案: 1.目前的ejabberd MAM不支持MAM MUC。但是有一个分支可以用来测试。请记住它尚未公开发布。 https://github.com/processone/ejabberd/blob/master/src/mod_mam.erl

  1. 编写一个模块来挂钩user_send_packet,在钩子中,将MUC消息存储在SQL中。然后提供http API以请求MUC消息。从客户端的角度来看,我使用HTTP API来查询MUC历史消息。
  2. 参考这个帖子: ejabberd MAM does not work for MUC