好的,问题应该是微不足道的,但我无法陷入困境。

我有两个用户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”,因此没有错误的jids。

因此,@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 

在OpenFire服务器上的A和B的花名册中,它们彼此与适当的JIDS联系(用户名@123)。

谁能提供一些见识?我迷路了。

编辑

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

使用Wireshark后,我收到了XML传输时收到的:

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

我已经禁用了SSL,我已经不确定地连接。我不确定为什么要获得SSL Type XML,那是什么?

有帮助吗?

解决方案

事实证明,这个问题的答案刚刚被忽略了。

在第一行代码中:

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

我没有使变量“用户名”具有正确的IP扩展名。因此,它只是“一个”而不是“@123”

将“ sendusername”移至顶部,然后更改“用户名”到“ sendusername”使一切正常工作:)

愚蠢的错误。

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top