Android / XMPP: слушатель присутствия игнорирует / отбрасывает недоступные присутствия - PullRequest
2 голосов
/ 28 сентября 2011

Я пытаюсь установить простой групповой чат xmpp на Android, используя библиотеку smack / asmack xmpp.И в основном все работает, кроме: недоступного присутствия, то есть когда пользователь покидает чат, кажется, игнорируется.Присутствие пользователей, входящих в групповой чат, в порядке.

Как мой локальный сервер Openfire, так и клиент xmpp (Instantbird) сообщают мне, что при выходе из системы присутствует НЕДОСТАТОЧНОЕ присутствие.Только мои вещи имеют проблемы.

Вот основной фрагмент моего кода.Короче говоря, когда пользователь (повторно) входит в комнату, я вижу вывод консоли («senceListener.processPacket »), когда пользователь уходит, ничего не происходит.

public boolean join(String room, user) {

    this.chat = new MultiUserChat(this.xmppConn, room);

    this.presenceListener = new PacketListener() {
        @Override
        public void processPacket(Packet packet) {
            System.out.println("presenceListener.processPacket");
            if (packet instanceof Presence)
                // Handle presence
        }
    };
    this.chat.addParticipantListener(this.presenceListener);

    this.messageListener = ...
    this.chat.addMessageListener(this.messageListener);
    ...
    try {
        this.chat.join(user);
        ...
    } catch (...) {
        ...
    }
}

Я бы понял, когда слушатель выберетдо ничего.Но это слишком странно для меня в данный момент.Я рад любой подсказке ... спасибо!

Кристиан

1 Ответ

0 голосов
/ 02 октября 2011

Я нашел рабочее решение здесь .

Он использует PacketFilter с фильтром для пакетов присутствия, подключая его к соединению xmpp;Несмотря на мое решение, подключив ParticipantListener к MultiUserChat.

Я до сих пор не знаю, почему моя первоначальная попытка не удалась, но ... хорошо ... она работает сейчас.

...