smack 数据包侦听器和消息侦听器之间的区别

Posted

技术标签:

【中文标题】smack 数据包侦听器和消息侦听器之间的区别【英文标题】:Difference between smack packet listener and message listener 【发布时间】:2014-04-07 07:22:09 【问题描述】:

您好,我正在创建一个 android 应用程序作为 XMPP 客户端到 ejabbered 服务器。

但我真的很困惑,因为我看到我可以将消息作为数据包或消息发送,也可以使用PacketListenerMessageListener 接收消息。

PacketListenerMessageListener 之间有什么区别,接收消息的好方法是什么?使用数据包监听器还是消息监听器?

【问题讨论】:

【参考方案1】:

MessageListener 只监听与消息相关的包,而 PacketListener 监听各种类型的包,可能包括消息相关的包,订阅相关的包,邀请相关的包,如果没有,它可能会监听服务器发送的所有 xml 包应用过滤器。您还可以添加过滤器来过滤特定的数据包。它还用于处理自定义数据包和编写自定义 XMPP 扩展

【讨论】:

【参考方案2】:

MessageListener 是一个高级接口,仅用于处理消息,PacketListener 是更复杂的“工具”,用于匹配和处理自定义数据包以及编写自定义 XMPP 扩展。如果 MessageListener 适合您的需求 - 请使用它们。

【讨论】:

以上是关于smack 数据包侦听器和消息侦听器之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

所有数据包的一个侦听器与处理特定类型的单独侦听器

使用 smack 的多用户聊天没有收到消息侦听器

未调用 XEP-0022 的 SMACK 消息侦听器

在与 Smack 4.2 重新连接后发送离线消息时,经过身份验证的侦听器出现异常

Smack MUC 邀请

asmack 没有收到多用户聊天请求