【问题标题】:How to add offline event handling in Openfire plugin?如何在 Openfire 插件中添加离线事件处理?
【发布时间】:2017-01-04 09:26:36
【问题描述】:

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

【问题讨论】:

  • 你能解释一下你的场景以便更好地理解吗?比如你想为任何用户处理离线消息?

标签: java event-handling openfire


【解决方案1】:

如果我不清楚您的问题,请纠正我。 你检查接口 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 时添加任何您想要的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2010-11-20
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多