Java 如何在Openfire插件中添加脱机事件处理?
我是java新手。我需要在Openfire插件中处理脱机会话。从plugindevelopmentdoc中,我能够理解基本知识,但我不知道如何处理openfire的脱机事件。 包org.jivesoftware.openfire.event中有一个类“SessionEventDispatcher” 在这里,我们有以下预定义事件:Java 如何在Openfire插件中添加脱机事件处理?,java,event-handling,openfire,Java,Event Handling,Openfire,我是java新手。我需要在Openfire插件中处理脱机会话。从plugindevelopmentdoc中,我能够理解基本知识,但我不知道如何处理openfire的脱机事件。 包org.jivesoftware.openfire.event中有一个类“SessionEventDispatcher” 在这里,我们有以下预定义事件: session_created session_destroyed anonymous_session_created anonymous_session_destro
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("\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-用户:25
2017.03.29 14:27:01.CustomPresenceEventListener-
当我离开Openfire时,日志将是:
=======会话不可用=========
2017.03.29 14:27:34.CustomPresenceEventListener-用户:25
2017.03.29 14:27:34.CustomPresenceEventListener-
因此,当用户进入/离开Openfire时,您可以添加任何想要的操作。您能解释一下您的场景以便更好地理解吗?比如你想为任何用户处理离线消息?