Smack编写jabber客户端(下)

Smack提供了一个灵活的框架来处理接受到的数据包:

  • org.jivesoftware.smack.PacketCollector -- 让你同步等待新的包.
  • org.jivesoftware.smack.PacketListener -- 异步通知你包的到来.
一个packet listener在事件风格的程序中使用,packet collector可以做轮循和阻塞操作.它们都可以
使用 XMPPConnection 实例来创建.

org.jivesoftware.smack.filter.PacketFilter 接口定义了那些包会分发到PacketCollector 
或者是PacketListener.你可以在 org.jivesoftware.smack.filter 包中找到预定义的filters.

 

// 创建一个包 filter监听特定用户的消息.我们使用AndFilter来联合两个filters.
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class), 
        new FromContainsFilter("mary@jivesoftware.com"));
// 假设我们创建了名称为 "connection" XMPPConnection 对象.

// 首先使用上面的filter创建PacketCollector对象.
PacketCollector myCollector = connection.createPacketCollector(filter);

// 接着, 我们创建一个 packet listener. 方便起见我们使用匿名内部类.
PacketListener myListener = new PacketListener() {
        public void processPacket(Packet packet) {
            // 当包到的时候你做什么.
        }
    };
// 注册.
connection.addPacketListener(myListener, filter);

 

标准Packet Filters

我们提供了一系列的filters,你可以实现  PacketFilter 接口来自定义实现.
  • PacketTypeFilter -- filters for packets that are a particular Class type.
  • PacketIDFilter -- filters for packets with a particular packet ID.
  • ThreadFilter -- filters for message packets with a particular thread ID.
  • ToContainsFilter -- filters for packets that are sent to a particular address.
  • FromContainsFilter -- filters for packets that are sent to a particular address.
  • PacketExtensionFilter -- filters for packets that have a particular packet extension.
  • AndFilter -- implements the logical AND operation over two filters.
  • OrFilter -- implements the logical OR operation over two filters.
  • NotFilter -- implements the logical NOT operation on a filter.

用Smack编写jabber客户端的基本知识都够了,更多内容请查阅官方资料和mail list请求帮助.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值