Я успешно подключился к XMPP-серверу (из XMPP-клиента Android) и могу отправлять сообщения пользователю, но не могу получать ответы от этого же пользователя.
Я отправляю сообщениявот так:
public void send_message(String message, String buddy) throws XMPPException {
buddy += "@localhost";
/* send message to user */
Log.w("Sending mesage " + message + " to user " + buddy, "0");
chat = chatManager.createChat(buddy, messageListener);
chat.sendMessage(message);
}
Я передаю messageListener в функцию createChat.Класс MessageListener:
class XMPPMessageListener implements MessageListener {
private String from;
private String body;
public void processMessage(Chat chat, Message message) {
this.from = message.getFrom();
this.body = message.getBody();
Log.w("*****Received message" + body + " from " + from, "0*****");
}
}
При отправке сообщения пользователю я получаю следующие выходные данные отладки:
W/Sending mesage play to user test@localhost( 823): 0
D/SMACK ( 823): 10:43:54 AM SENT (1156346368): <message id="vwaJX-15" to="test@localhost" from="eleano@localhost/Smack" type="chat"><body>test</body><thread>249ke0</thread></message>
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): <presence id="vwaJX-12" to="eleano@localhost/Smack" from="eleano" type="error"><error code="404" type="cancel"><remote-server-no
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): t-found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence>
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): <presence id="vwaJX-14" to="eleano@localhost/Smack" from="test" type="error"><error code="404" type="cancel"><remote-server-not-
D/SMACK ( 823): 10:43:54 AM RCV (1156346368): found xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></presence>
И сообщение "test" отображается на подключенномпользовательский тест (в данном случае).Я отправляю сообщение от пользователя eleano.Мы также можем видеть на экране вывод отладочной информации «завершение воспроизведения сообщения для пользователя test @ localhost», указывающий, что моя функция действительно успешно вызывается.
После получения сообщения от test to eleano я толькополучить этот отладочный вывод:
D/SMACK ( 823): 10:44:00 AM RCV (1156346368): <message id="58Fjj-64" to="eleano@localhost/Smack" from="test@localhost/Spark 2.6.3" type="chat"><body>yes</body><thread>0tlK7o<
D/SMACK ( 823): 10:44:00 AM RCV (1156346368): /thread><x xmlns="jabber:x:event"><offline/><composing/></x></message>
Но пользователь eleano не получает сообщение.Мы также можем заметить, что на экране не отображается
Log.w("*****Received message" + body + " from " + from, "0*****");
, поэтому MessageListener никогда не вызывается.Это почему?Я настроил его правильно, как сказано в документации.
Любые идеи приветствуются.И спасибо.