귀하의 질문을 명확하게 이해할 수없는 경우 제발 정정하십시오. 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 파일에 표시됩니다 를 ======= SESSION 이용 가능한 ========= 2017년 3월 29일 14시 27분 1초 .CustomPresenceEventListener - USER : 25
2017년 3월 29일 14시 27분 1초 .CustomPresenceEventListener -
그리고 난의 Openfire 로그가 될 것입니다 떠날 때 : ======= SESSION UNAVAILABLE =========를 2017년 3월 29일 14시 27분 34초 .CustomPresenceEventListener - USER : 25
을 2017.03.29 14:27:34 .CustomPresenceEventListener -
사용자가 Openfire를 입력하거나 나가면 원하는 동작을 추가 할 수 있습니다.
더 나은 이해를 위해 시나리오를 설명 할 수 있습니까? 어떤 사용자에 대해서도 오프라인 메시지를 처리하고 싶다면? –