如何使用PHP从openfire中删除特定的消息

时间:2016-09-07 08:09:23

标签: php openfire

我正在处理我要求删除的聊天应用程序 24小时后来自聊天室的聊天消息。因此,如果任何用户在24小时后将从应用程序登录,则他们无法读取该消息,因为该消息已过期。所以对于这个功能,我首先使用这种方法,这个消息存储在openfire的ofMessageArchive表中,所以我已经从这个表中手动删除了消息但是如果有任何用户从应用程序登录,他们将能够再次看到该消息

我也为多个用户测试了这个。

我也参考了以下链接,但它无效。请帮我 https://community.igniterealtime.org/docs/DOC-2199

2 个答案:

答案 0 :(得分:0)

有一个XEP讨论这个问题:XEP-0079。

重点是在消息中插入'expire-at'条件,如下例所示:

<message
    from='northumberland@shakespeare.lit'
    id='richard2-4.1.247'
    to='kingrichard@royalty.england.lit'>
  <body>My lord, dispatch; read o'er these articles.</body>
  <amp xmlns='http://jabber.org/protocol/amp'>
    <rule condition='expire-at'
          action='drop'
          value='2004-01-01T00:00:00Z'/>
  </amp>
</message>

但是,Openfire backlog.

中有关于此XEP的一些未解决的问题

所以,我想这个功能尚未准备就绪。

祝你好运。

答案 1 :(得分:0)

您想要删除离线消息,而且ofMessageArchive不是相关表格。

离线聊天消息存储在&#34; ofOffline &#34; Openfire中的表格。每当用户被识别为离线时,Openfire会在 ofOffline 表中存储该用户的传入消息。当该用户联机(发送初始状态)时,服务器会为该用户选择所有离线消息并将其发送给他并立即从 ofOffline 中删除它们。

现在,您可以针对用户名查询该表,并使用 creationDate 列进行日期比较,该列存储时间戳(以毫秒为单位)(13位数)并为其添加两个零。 (001234567890123)