发送XMPP(Smack)消息

时间:2010-12-27 16:14:17

标签: xmpp chat openfire smack

好的,这个问题应该是微不足道的,但我无法深究它。

我有两个用户A&乙

这个例子的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 - >乙@ 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 

在Openfire服务器上的A和B的名单中,他们互相拥有正确的JID(用户名@ 123)。

任何人都可以提供一些见解吗?我输了。

修改

我正在尝试使用Wireshark来捕获发送到Openfire服务器和从Openfire服务器发送的XML,以确定消息的收件人是否正确命名(A @ 123而不是A)。

使用Wireshark后,我收到了这个正在传输的XML:

\302\3469\223\341\3429\000\000\000\000\377\377

我已禁用SSL,我已无法安全连接。我不知道为什么我会得到SSL类型的XML,它是什么?

2 个答案:

答案 0 :(得分:3)

事实证明,这个问题的答案是被忽视的。

在第一行代码中:

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

我没有让变量“username”拥有正确的IP扩展名。所以它只是“A”而不是“A @ 123”

将“sendUsername”移到顶部,将“username”更改为“sendUsername”可以使一切运行得很好:)

愚蠢的错误。

答案 1 :(得分:1)

使用IP地址几乎总是比您想象的更令人困惑。

您很可能错误配置了OpenFire,因此IP地址不是有效的主机名。进入管理控制台的“系统属性”下,确保xmpp.domain属性设置为您的IP地址。