如何在 Openfire 插件中添加离线事件处理



我是java新手。我需要在 Openfire 插件中处理离线会话。从插件开发文档中,我能够理解基础知识,但我不明白如何处理 openfire 的离线事件。在包org.jivesoftware.openfire.event中有一个类"SessionEventDispatcher"

我们有以下预定义事件:

session_created
session_destroyed
anonymous_session_created
anonymous_session_destroyed
resource_bound

然后这些事件有侦听器,它在 Presence 插件中实现。如果我还需要添加离线事件,请帮助我了解如何进行。

我正在以 redis 保存在线用户,但有些 openfire 中的用户会话比 redis 中的用户少,这意味着我没有在我的插件中处理一些离线事件,因为哪个用户会话被创建并添加到 redis 中,但用户会话没有明确关闭,处理从 redis 中删除, 我面临着这种差异。

如果我不清楚你的问题,请纠正我。您是否检查接口 org.jivesoftware.openfire.user.PresenceEventListener?例如,我实现了该接口:

public class CustomPresenceEventListener implements PresenceEventListener {
private static final Logger LOG = LoggerFactory.getLogger(CustomPresenceEventListener.class);
@Override
public void availableSession(ClientSession session, Presence presence) {
    LOG.info("nn=======SESSION AVAILABLE=========n");
    try {
        LOG.info("USER : {}", session.getUsername());
    } catch (UserNotFoundException e) {
        LOG.info(e.getMessage(), e);
    }
    LOG.info("n================nn");
}
@Override
public void unavailableSession(ClientSession session, Presence presence) {
    LOG.info("nn=======SESSION UNAVAILABLE=========n");
    try {
        LOG.info("USER : {}", session.getUsername());
    } catch (UserNotFoundException e) {
        LOG.info(e.getMessage(), e);
    }
    LOG.info("n================nn");
}
@Override
public void presenceChanged(ClientSession session, Presence presence) {
}
@Override
public void subscribedToPresence(JID subscriberJID, JID authorizerJID) {
}
@Override
public void unsubscribedToPresence(JID unsubscriberJID, JID recipientJID) {
}

并使用以下命令添加/删除此侦听器:

PresenceEventDispatcher.addListener(presenceEventListener);
PresenceEventDispatcher.removeListener(presenceEventListener);

当我连接到Openfire时,我将在文件信息中看到类似.log以下内容:=======会话可用=========2017.03.29 14:27:01 .自定义状态事件侦听器 - 用户 : 25

2017.03.29 14:27:01 .CustomPresenceEventListener -

当我离开时,Openfire日志将是:=======会话不可用=========2017.03.29 14:27:34 .自定义状态事件侦听器 - 用户 : 25

2017.03.29 14:27:34 .CustomPresenceEventListener -

因此,您可以在用户进入/离开 Openfire 时添加所需的任何操作。

相关内容

  • 没有找到相关文章

最新更新