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