如何使用Smack库只消耗XMPP服务器的一些聊天消息?

时间:2012-08-27 14:20:50

标签: xmpp smack

我想知道是否有可能决定何时从xmmp服务器上消费?

让我试着更好地解释一下...想象一下,我开发了一个机器人来读取消息正文以“MESSAGETOBOTONLY:”开头的所有消息,如果我使用通常的方法来阅读消息:

public void processMessage(Chat chat, Message message) {
    if (message.getType() == Message.Type.chat) { ... }
} 

我收到的所有消息都将消耗和丢失...我想要的只是消费以以下内容开头的消息:“MESSAGETOBOTONLY:”并让其他消息仍在服务器上由xmpp聊天客户端使用。

最好的问候,

1 个答案:

答案 0 :(得分:1)

不要滥用消息体元素中的魔术字符串来指示特殊的消息类型。

如果要控制机器人,请使用IQ数据包或在消息类型数据包中添加额外的扩展名,以指示此消息用于特殊目的。然后,您可以添加带有packetFilter的packetListener,以便在收到这些类型的XMPP节时收到通知。