Я знаю, что этот вопрос задавался ранее, но mschonaker here дал только частичный ответ. На моем веб-сайте пользователь может добавить людей в свой список, а затем приятель должен принять его и, наконец, они подключены. Первый человек (пользователь а) пользуется знаменитым
roster.createEntry(jid, name, groups);
, который работает и добавляет запись в свой список, но потом я немного запутался в том, что делать:
как получить запрос на другом конце? Я попытался реализовать PacketListener, переопределить processPacket () и проверить пакет, типы которого являются Presence.Type.subscribe или Presence.Type.subscribeed, но похоже, что он срабатывает только для пользователя a, но не тот, который должен прослушивать подписки - пользователь b.
тогда у меня есть другая функция, которая может искать все запросы при входе в систему, поэтому, если я снова войду в систему, я увижу запрос, но как мне его принять? Сначала я подумал, что пользователь b должен также добавить пользователя a в свой список
roster.createEntry(jid, name, groups);
но это не сработало и ничего не происходило. Я тоже пытался сделать
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(jid);
xMPPConnection.sendPacket(subscribed);
но тоже не сработало. Я уверен, что должен быть хороший и простой способ сделать это, но я так далеко не нашел его, и попытка сделать что-то одно за разом доставила мне слишком много головной боли. Кто-нибудь знает правильный поток для этого? заранее спасибо!