Отправить сообщение XMPP (Smack) - PullRequest
3 голосов
/ 27 декабря 2010

Хорошо, проблема должна быть тривиальной, но я не могу до конца разобраться.

У меня есть два пользователя A & B

Их JID для этого примера будет A @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» в конце псевдонима, чтобы не было неправильных JID.

Итак, A @ 123 отправляет msgObj B @ 123.Вот как я понял, что сообщения XMPP работают.То, что вы не можете отправить с A-> B, но это должно быть A @ 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, это то, что это такое?

Ответы [ 2 ]

3 голосов
/ 29 декабря 2010

Оказалось, что ответом на эту проблему было что-то, что просто упустили из виду.

В первой строке кода:

 chat = chatmanager.createChat(username, new MessageListener() {
            public void processMessage(Chat chat, Message message) {}
      });

Я не сделал, чтобы переменная "username" имела правильное расширение IP. Так что это было просто «А» вместо «А @ 123»

Перемещение «sendUsername» вверх и изменение «username» на «sendUsername» делает все отлично:)

Глупая ошибка.

1 голос
/ 29 декабря 2010

Использование IP-адресов почти всегда сбивает с толку, чем вы думаете.

Есть большая вероятность, что вы неправильно настроили OpenFire, так что IP-адрес не является допустимым именем хоста.Зайдите в консоль администратора в разделе «Свойства системы» и убедитесь, что в свойстве xmpp.domain указан ваш IP-адрес.

...