smack处理收到的Packet

53 篇文章 0 订阅
31 篇文章 0 订阅
Smack提供灵活的框架来通过两种构造处理收到的 packet:
  • org.jivesoftware.smack.PacketCollector —— 一个让您同步等待新packet的类。
  • org.jivesoftware.smack.PacketListener —— 一个异步通知您引入的packet的接口。
packet监听器用于事件样式的编程,而packet收集器有一个可以做轮询和阻塞操作的packet的结果队列。 所以,当您想对一个有可能随时到来的packet采取一些操作时,使用packet监听器;而当您想等待一个特别的packet到来时,使用packet收集器。您可以使用XMPPConnection实例创建packet收集器和监听器。 org.jivesoftware.smack.filter.PacketFilter 接口决定哪个特别的将会被传递到 PacketCollectorPacketListener。org.jivesoftware.smack.filter package 包中有许多预定义的过滤器。 下面的代码片段演示注册了一个packet收集器和一个packet 监听器: // 创建一个packet过滤器来监听来自一个特定用户的新的消息 //我们可以使用一个AndFilter来结合其它两个过滤器。 PacketFilter filter = new AndFilter(new PacketTypeFilter( Message.class), new FromContainsFilter( "mary@jivesoftware.com")); // 假设我们已经创建了一个名为"connection"的XMPPConnection。
// 首先,用我们创建的过滤器注册一个packet收集器。PacketCollector myCollector = connection.createPacketCollector(filter); // 通常,您应该用收集器来些什么,像等待新的packet。 // 接下来,创建一个packet监听器。我们可以简便地使用匿名内部类。PacketListener myListener = new PacketListener() { public void processPacket(Packet packet) { // 在这里用收到的packet做些什么。 } }; // 注册这个监听器。connection.addPacketListener(myListener, filter);
标准Packet过滤器。
Smack包括丰富的packet 过滤器集,当然您可以通过实现 PacketFilter接口创建自己的过滤器。 默认的过滤器集包括:
  • PacketTypeFilter ——特定类的packet过滤器。
  • PacketIDFilter ——含有特定packet ID的packet过滤器。
  • ThreadFilter ——含有特定线程ID的消息packet过滤器。
  • ToContainsFilter ——发送到特定地址的packet过滤器。
  • FromContainsFilter ——来自特定地址的packet过滤器。
  • PacketExtensionFilter ——含有特定packet扩充的packet过滤器 filters for s that have a particular extension.
  • AndFilter ——实现两个过滤器的逻辑“与”操作。
  • OrFilter —— 实现两个过滤器的逻辑“或”操作。
  • NotFilter ——实现一个过滤器的逻辑“非”操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值