如何控制Ejabberd中保存在数据库中的离线组合消息?

时间:2016-06-23 06:47:07

标签: erlang ejabberd

您好我已经在我的服务器上安装了ejabberd版本16.04.43,它现在仍按照我的需要工作。我现在有一个要求,我不应该在数据库中存储离线撰写信息,你可以帮我解决.. !!

当用户2在线时用户1发短信用户2:

user 2 receives typing status and message asap.

现在,当用户2处于离线时,用户1发短信用户2:

So these message are saved in database along with composing message. 

所以我需要的是这些作曲信息不应保存在数据库中,任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

除上述答案外,实现相同目的的另一种方法是在消息包中添加 no-store 标记。

,即类似于:

<message to='xyz@xyz.com' id='A33sjdks' from='abc@xyz.com/telnet'>
 <body>Sample message body</body>
 <request xmlns='urn:xmpp:receipts'/>
 <no-store xmlns='urn:xmpp:hints'/>
</message>

因此,在mod_offline模块中处理store_packet时,将忽略任何带有 no-store 标记的消息节。

仅供参考添加撰写消息节。

<message 
     from='bernardo@shakespeare.lit/pda'
     to='francisco@shakespeare.lit/elsinore'
     type='chat'>
     <composing xmlns='http://jabber.org/protocol/chatstates'/>
     <no-store xmlns='urn:xmpp:hints'/>
</message>

当您希望存储送货收据,阅读收据但不能编写,打字,删除等节时,上述方法可以派上用场。

答案 1 :(得分:0)

mod_offline: 
    access_max_user_messages: max_user_offline_messages
    store_empty_body: false

在ejabberd.yml文件中添加了这些行,我按照我接受的方式获得了输出。

赞美自己。