如果我不清楚你的問題,請糾正我。 你檢查接口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年3月29日14時27分01秒.CustomPresenceEventListener - USER:25
2017年3月29日14時27分01秒.CustomPresenceEventListener -
當我離開的Openfire日誌將是: ======= SESSION UNAVAILABLE ========= 2017年3月29日14點27分34秒.CustomPresenceEventListener - USER:25
2017.03.29 14:27:34 .CustomPresenceEventListener -
因此,您可以在用戶進入/離開Openfire時添加所需的任何操作。
你能解釋一下你的情況嗎?就像你想處理任何用戶的離線消息一樣? –