继续上一章,这里讲述监听器,在openfire的开发过程中监听器是一个很重要的部分。在消息的交互工程中,监听器起到了触发事件给开发者。
1.一个最简单的IQ包的监听器:
PacketTypeFilter packetTypeFilter = new PacketTypeFilter(IQ.class);
connectManager.getConnection().addPacketListener(new PacketListener(){
public void processPacket(Packet packet) {
System.out.println(packet.toXML());
}
},packetTypeFilter);//监听iq包set类型
这里用到smack中的 过滤器集
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 --实现一个过滤器的逻辑“非”操作。
不过在平常开发过程中,可以使用smack装门针对一些特殊事件都提供了装门的监听器类和事件给开发者,这样编程可以面向对象,更好的区分出消息的来源。
2.连接的监听器
会提供连接的情况给开发者,有断开连接,异常断开,重新连接。smack在异常断链的时候会自动去重连。