博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理收到的Stanzas
阅读量:5093 次
发布时间:2019-06-13

本文共 1796 字,大约阅读时间需要 5 分钟。

处理收到的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 useconnection.addSyncStanzaListener(myListener, filter);

标准Stanza过滤器

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

  • StanzaTypeFilter - 用于特定类类型的节的过滤器。
  • StanzaIdFilter - 具有特定数据包ID的节的过滤器。
  • ThreadFilter - 具有特定线程ID的消息节的过滤器。
  • ToMatchesFilter - 发送到特定地址的节的过滤器。
  • FromMatchesFilter - 从特定地址发送的节的过滤器。
  • StanzaExtensionFilter - 具有特定节扩展名的节的过滤器。
  • AndFilter - 通过两个过滤器实现逻辑AND操作。
  • OrFilter - 通过两个过滤器实现逻辑OR运算。
  • NotFilter - 在过滤器上实现逻辑NOT操作。

转载于:https://www.cnblogs.com/endv/p/11420126.html

你可能感兴趣的文章
20172319 实验三《查找与排序》实验报告
查看>>
构造函数的继承
查看>>
Nginx的虚拟主机配置
查看>>
overflow 属性
查看>>
Mychael原创题 洛谷T23923 Mychaelの水题 【题解】
查看>>
Objective-C 协议(protocol)
查看>>
Android自定义进度条
查看>>
java虚拟机深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)
查看>>
struts返回对象json格式数据
查看>>
[[UIScreen mainScreen] bounds] 返回的屏幕尺寸不对
查看>>
Scrapy爬取小说简单逻辑
查看>>
《移动平台应用开发实践》教学进程(12周)
查看>>
OracleDG主库丢失归档增量同步
查看>>
32位的PLSQL登录64位的ORA11g有关问题
查看>>
spring+mybatis通用dao层、service层的实现
查看>>
CentOS和Ubuntu哪个好?
查看>>
python三大神器之virtualenv
查看>>
CityMaker SDK与三维GIS城市
查看>>
java中的Timer
查看>>
python基础_格式化输出(%用法和format用法)
查看>>