zoukankan      html  css  js  c++  java
  • 处理收到的Stanzas

    处理收到的Stanzas

    背部

    Smack使用两种结构提供了一个灵活的框架来处理传入的节:

    • org.jivesoftware.smack.StanzaCollector - 一个允许您同步等待新节的类。
    • org.jivesoftware.smack.StanzaListener - 用于异步通知您传入节的接口。节事件侦听器用于事件样式编程,而节集合器具有节的结果队列,您可以对其进行轮询和阻止操作。因此,当您想要在节恰好进入时采取某些操作时,节监听器很有用,而当您想要等待特定节到达时,节收集器很有用。可以使用XMPPConnection实例创建Stanza收集器和侦听器

    org.jivesoftware.smack.filter.StanzaFilter接口确定哪个特定节将被传递到一个StanzaCollectorStanzaListener可以在org.jivesoftware.smack.filter包中找到许多预定义的过滤器

    以下代码片段演示了如何注册节收集器和节监听器:

    // Create a stanza filter to listen for new messages from a particular
    // user. We use an AndFilter to combine two other filters._
    StanzaFilter filter = new AndFilter(StanzaTypeFilter.Message, FromMatchesFilter.create("mary@jivesoftware.com"));
    // Assume we've created an XMPPConnection named "connection".
    
    // First, register a stanza collector using the filter we created.
    StanzaCollector myCollector = connection.createStanzaCollector(filter);
    // Normally, you'd do something with the collector, like wait for new packets.
    
    // Next, create a stanza listener. We use an anonymous inner class for brevity.
    StanzaListener myListener = new StanzaListener() {
    		**public** **void** processStanza(Stanza stanza) {
    			// Do something with the incoming stanza here._
    		}
    	};
    // Register the listener._
    connection.addAsyncStanzaListener(myListener, filter);
    // or for a synchronous stanza listener use
    connection.addSyncStanzaListener(myListener, filter);
    

    标准Stanza过滤器

    Smack包含一组丰富的节过滤器,或者您可以通过编码到StanzaFilter界面来创建自己的过滤器默认的过滤器集包括:

    • StanzaTypeFilter - 用于特定类类型的节的过滤器。
    • StanzaIdFilter - 具有特定数据包ID的节的过滤器。
    • ThreadFilter - 具有特定线程ID的消息节的过滤器。
    • ToMatchesFilter - 发送到特定地址的节的过滤器。
    • FromMatchesFilter - 从特定地址发送的节的过滤器。
    • StanzaExtensionFilter - 具有特定节扩展名的节的过滤器。
    • AndFilter - 通过两个过滤器实现逻辑AND操作。
    • OrFilter - 通过两个过滤器实现逻辑OR运算。
    • NotFilter - 在过滤器上实现逻辑NOT操作。
  • 相关阅读:
    Ext.form.FieldSet字段集
    jQuery系列目录
    Ext.form.field.Trigger触发字段
    Ext.grid.Panel表格分页
    ExtJS Model数据实体模型
    Ext.form.field.Spinner微调字段
    Ext.window.MessageBox
    书单
    资料收集
    喧嚣
  • 原文地址:https://www.cnblogs.com/endv/p/11420126.html
Copyright © 2011-2022 走看看