Отправить сообщение xmpp (smack)
Вопрос
Хорошо, проблема должна быть тривиальной, но я не могу понять это.
У меня есть два пользователя A & B
Их JID для этого примера будет@123 и B@123, где 123 - IP -адрес сервера.
Я отправляю сообщение из A-> B, используя следующий код:
chat = chatmanager.createChat(username,
new MessageListener() {
public void processMessage(Chat chat, Message message) {}});
String sendUsername = username + "@123";
Message msgObj = new Message(sendUsername, Message.Type.chat);
msgObj.setBody(message);
chat.sendMessage(msgObj);
Я жестко закодировал IP, так что я на 100% уверен, что прикрепляю «@123» в конце прозвища, чтобы не было неправильных джидов.
Так что@123 отправляет MSGOBJ в B@123. Вот как я понял, что сообщения XMPP работают. Что вы не можете отправить из A-> b, но это должно быть@123 -> b@123.
Однако мой сервер, кажется, думает иначе. Это постоянно сообщает мне о следующей ошибке:
2010.12.27 19:02:52 [org.jivesoftware.openfire.session.LocalOutgoingServerSession
.createOutgoingSession(LocalOutgoingServerSession.java:258)] Error trying to
connect to remote server: A(DNS lookup: A:5269)
java.net.UnknownHostException: A
Как в списке A и B на сервере OpenFire, они имеют друг друга в качестве контакта с соответствующими JID (имя пользователя@123).
Кто -нибудь может дать некоторое понимание? Я потерялся.
Редактировать
Я пытаюсь использовать Wireshark, чтобы поймать XML, отправленный на сервер OpenFire и обратно, чтобы определить, правильно ли получатель сообщения именовано (A@123 вместо A).
При использовании Wireshark я получил это как передача XML:
\302\3469\223\341\3429\000\000\000\000\377\377
Я отключил SSL, я подключился к непосредственно. Я не уверен, почему я получаю SSL -тип XML, это то, что это такое?
Решение
Оказывается, ответ на эту проблему было то, что было просто пропущено.
В первой строке кода:
chat = chatmanager.createChat(username, new MessageListener() {
public void processMessage(Chat chat, Message message) {}
});
Я не сделал переменную «имя пользователя» иметь правильное расширение IP. Так что это было просто "а" вместо "@123"
Перемещение "sendusername" на вершину и изменение «имени пользователя» на «Sendusername» заставляет все работать отлично :)
Глупая ошибка.
Другие советы
Использование IP -адресов почти всегда более запутанно, чем вы думаете.
Есть большая вероятность, что вы неправильно настроены OpenFire, так что IP -адрес не является действительным именем хоста. Зайдите в консоль администратора, в разделе «Свойства системы» и убедитесь, что xmpp.domain
Свойство установлено на ваш IP -адрес.