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

lymnna71  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(354)

我是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中删除而处理的,我面临这种差异。

ahy6op9u

ahy6op9u1#

如果我不明白你的问题,请纠正我。你检查过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("\n\n=======SESSION AVAILABLE=========\n");
    try {
        LOG.info("USER : {}", session.getUsername());
    } catch (UserNotFoundException e) {
        LOG.info(e.getMessage(), e);
    }
    LOG.info("\n================\n\n");
}

@Override
public void unavailableSession(ClientSession session, Presence presence) {
    LOG.info("\n\n=======SESSION UNAVAILABLE=========\n");
    try {
        LOG.info("USER : {}", session.getUsername());
    } catch (UserNotFoundException e) {
        LOG.info(e.getMessage(), e);
    }
    LOG.info("\n================\n\n");
}

@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时,我会在info.log文件中看到类似的内容:==========会话可用========2017.03.29 14:27:01.custompresenceeventlistener-user:25

2017.03.29 14:27:01.CustomPresence事件监听器-

当我离开openfire时,日志将是:==========会话不可用===========2017.03.29 14:27:34.custompresenceeventlistener-用户:25

2017.03.29 14:27:34.CustomPresence事件监听器-

所以当用户进入/离开openfire时,您可以添加任何想要的操作。

相关问题