aSmack MessageListener 的 processMessage 永远不会被调用

Posted

技术标签:

【中文标题】aSmack MessageListener 的 processMessage 永远不会被调用【英文标题】:aSmack MessageListener's processMessage never being called 【发布时间】:2012-01-20 01:01:59 【问题描述】:

我正在尝试使用 aSmack 在 android 手机之间设置 XMPP 通信的基础知识。我设法从我的应用程序注册了一个帐户,并将消息发送到我在我的 PC 上登录的 Jabber-ID。问题是我的 PC 客户端似乎没有收到回复,我的 MessageListener 中的 processMessage() 似乎没有被调用。

       tryconnection.login("kmomochesstest", "password1");
       catch(Exception e)Log.e("connection","Account login error: " + e.toString());
       chat = connection.getChatManager().createChat("chesstestpc@macjabber.de", new MessageListener() 

             public void processMessage(Chat chat, Message message) 
                 trySystem.out.println(message.getBody());
             catch(Exception e)Log.e("connection","Message send error: " + e.toString());
       );
       trychat.sendMessage("Test Message from Activity");Log.d("connection","Just sent Message ");
        catch(Exception e)Log.e("connection","Message send error: " + e.toString());

此时我正在尝试打印到控制台,但我已尝试打印到日志并使用 chat.sendMessage(message.getBody()) 回显到我的 PC。似乎没有任何东西可以注册传入的消息。这似乎是我在网上找到的所有操作指南的格式。

【问题讨论】:

我正在使用 aSmack-2010.05.07,据我所知,这是最新版本,不确定使用的是什么版本的 Smack。我确实最终做了一个 ChatManagerListener 并且确实收到了我所需要的几乎所有的回复。附带说明一下,这在我的应用程序的几次运行中运行良好。但是现在,当我最初尝试连接到我的服务器时,我收到“无法连接到域:端口:远程服务器超时。(504)。原因:java.net.UnknownHostException:主机未解析:域:端口”的想法?? 这已通过重置我的计算机来解决。 【参考方案1】:

您使用的是什么版本的 Smack?

在尝试将不包含线程 ID 的消息与使用线程 ID 创建的现有聊天匹配时(如 Smack 所做的那样),在早期版本中存在问题。例如,Pidgin 不使用线程 id,这反过来会在收到消息时创建一个新的聊天实例。

匹配过程在 3.2 中得到了改进,以防止这种情况发生。

尝试创建一个 ChatManagerListener 并查看是否从您的回复中创建了新的聊天。

【讨论】:

我正在使用 aSmack-2010.05.07,据我所知,这是最新版本,不确定使用的是什么版本的 Smac。我确实最终做了一个 ChatManagerListener 并且确实收到了我所需要的几乎所有的回复。 这是旧版本的 Smack。我认为大多数人现在实际上都在使用 Smack 和一些小模组来使其在 Android 上运行。然后,您将受益于新版本的 Smack。 是的,它似乎可以满足我想要的真正基本的消息传递需求,所以我很好。我真的不需要更复杂的 PubSub 功能。

以上是关于aSmack MessageListener 的 processMessage 永远不会被调用的主要内容,如果未能解决你的问题,请参考以下文章

asmack + android + 聊天应用程序

自定义 MessageListener 到 DefaultMessageListenerContainer 被覆盖

如何在 JMS 中使用带有 MessageListener 的消息转换器?

我无法在 smack android 的 MessageListener 方法中接收离线消息

从 JMS MessageListener 发出回滚信号

MessageListener onMessage方法中的Spring RabbitMQ断点