开发者社区> jieforest> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

XMPP客户端库Smack 4.0.6版开发

简介: XMPP客户端库Smack 4.0.6版开发 一、Smack库概述 Smack是一个开源、易用的XMPP/Jabber客户端库,它使用Java语言开发,由Jive Software开发。
+关注继续查看
XMPP客户端库Smack 4.0.6版开发
一、Smack库概述
Smack是一个开源、易用的XMPP/Jabber客户端库,它使用Java语言开发,由Jive Software开发。
Smack的优点是编程简单。
Smack的缺点是其API并非为大量并发用户设计,每个客户都要1个线程,占用资源相对较,因此用Smack做模拟测试时,1台机器只能模拟有限(数千个)客户。
截止2014年11月27日,Smack库已经发展到4.0.6版。
最新的好消息是Smack在4.1.0版后将直接支持Android系统,而无需再使用以前的Smack移植版aSmack库了。
Smack库源码托管于GitHub,主页见: https://github.com/igniterealtime/Smack/

二、Smack 4的改变
Smack库从3.4版发展到4.0.x版后,其API有较大的变化,主要有:
1、把Connection类重命名为XMPPConnection类
XMPPConnection类是XMPPTCPConnection类和XMPPBOSHConnection类的父类。
2、把各种Provider类进行了分包
3、keep-alive(持久连接)机制从smack-core库移到了smack-extensions库
keep-alive机制现在由PingManager类提供。
4、PrivacyList类的toString()方法重命名为getName()
5、当Chat实例的所有引用都撤掉后,应该调用Chat.close()方法
否则Chat对象会有内存泄露的隐患,直到ChatManager对象被垃圾回收器回收后内存泄露隐患才会消失。
6、ServerTrustManager类被移除了
如果要使用带SSL认证的XMPP,你只需提供自己的SSLContext对象给ConnectionConfiguration对象即可。
7、Packet.setProperty()从smack-core库移到了smack-extensions库
其API现在可以在org.jivesoftware.smackx.jiveproperties包中找到。
8、Connection.getAccountManager()方法现在改成了AccountManager.getInstance(XMPPConnection)方法
9、异常API做了改进
10、ToContains过滤器被移除了

三、Smack库的特征
1、极度简单易用,API功能强大
发送一条文本消息给某个用户只需几行代码:

点击(此处)折叠或打开

  1. AbstractXMPPConnection connection = new XMPPTCPConnection("mtucker", "password", "jabber.org");
  2. connection.connect();
  3. connection.login();
  4. Chat chat = ChatManager.getInstanceFor(connection)
  5. .createChat("jsmith@jivesoftware.com", new MessageListener(){
  6. public void processMessage(Chat chat, Message message){
  7. System.out.println("Received message: " + message);
  8. }
  9. });
  10. chat.sendMessage("Howdy!");
2、隔离了底层数据包组装的复杂性,自然有相应的库来完成这些功能。Smack提供了更智能的高层构造,比如Chat类和Roster类,这样开发会更富有效率。
1)无需熟悉XMPP的XML格式,甚至都不需要了解XML
2)提供了简单的M2M通信
Smack让开发者可以对每条消息都设置大量的属性,属性中还可以包含Java对象。
3)基于Apache许可证的开源代码,这意味着你可以把Smack放入你自己的商业软件中。

四、Smack库的组成
Smack库可以内嵌到任意的Java应用程序中。Smack库有数个JAR文件组成,非常具有灵活性。
1、smack-core.jar
提供了核心XMPP功能。都是XMPP RFC规范定义的XMPP特性。
2、smack-extensions.jar
支持许多由XMPP Standards Foundation定义的扩展(XEP)功能。包括群聊、文件传输、用户搜索等等。
以后可查看文档《扩展手册》:
https://github.com/igniterealtime/Smack/blob/master/documentation/extensions/index.html
(目前还是无效的)
3、smack-experimental.jar
支持许多由XMPP Standards Foundation定义的体验性(XEP)功能。其API和功能特性都被认为是不稳定的。
4、smack-legacy.jar
支持许多由XMPP Standards Foundation定义的遗留(XEP)功能。
5、smack-bosh.jar
支持BOSH通信(XEP-0124规范定义的)。此代码被认为处于Beta阶段。
6、smack-jingle.jar
支持Jingle。此代码很老,目前处于无维护的状态。
7、smack-resolver-dnsjava.jar
支持对DNS SRV记录的解析,主要用于那些不支持javax.naming API的平台。
8、smack-debug.jar
用于协议流量的增强型GUI调试器。当调试模式开启后,如果它在类路径下,它会自动被使用。
以后可查看文档《调试模式》:
https://github.com/igniterealtime/Smack/blob/master/documentation/debugging.html
(目前还是无效的)

五、Smack的配置
Smack的初始化过程涉及到2阶段的调用。
1、初始化系统属性
通过SmackConfiguration类初始化所有的系统可访问属性,这些属性都是通过getXXX方法取回属性值的。
2、初始化启动类
任意类如果继承了SmackInitializer接口后,都可以在调用initialize()方法后得到初始化,这意味着得到初始化的类在启动后都是活动的。
如果没有继承SmackInitializer接口,那么要实现初始化,必须要放置一个静态代码块来实现——他在类装载时会自动执行。

初始化是通过配置文件来完成的。默认情况下,Smack会载入Smack JAR文件中内嵌的配置文件(它位于org.jivesoftware.smack/smack-config.xml)。这个指定的配置文件包含了一系列需载入初始化的类列表。所有的管理器类型的类都需要被初始化,这些管理器类就包含在上面所说的初始化列表中。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
2023最新版PS软件安装包下载安装教程Photoshop2023
全新的ps2023与上个版本相比,该版本为大家带来了更多的新功能及优化,例如添加了一个“Neural Gallery”的滤镜功能,而翻译为中文就是神经画廊滤镜,也许听名字感觉很奇妙,但根据功能来说,其叫做神经网络智能滤镜(AI滤镜)比较合适,它应该是利用人工神经网络算法,根据图片内容进行智能修饰,让修图变得更加简单。另外,在ps2023这种还提供了一个自动抠天空和替换天空功能,并自带了众多天空素材,大家就再也不需要去网上找图来进行使用了,直接在这里面替换即可,十分方便。
47 0
阿里云免费版SSL云盾证书申请流程
ssl证书可以快速实现域名由http升级为https,防止网站被拦截、被篡改、被劫持、被仿冒,阿里云提供免费版的SSL云盾证书,但是很多用户却找不到申请入口,下面就介绍下如何申请阿里云免费版SSL云盾证书。
130 0
从0-1的eslint插件开发教程
开发eslint插件目的:根据项目需要,自定义满足项目特殊需要的校验规则是 参考eslint官方文档展开阐述
92 0
SAP S4HANA系统里的客供件管理
SAP S4HANA系统里的客供件管理
82 0
XMPP客户端库Smack
原文博客地址:http://blog.csdn.net/chszs/article/details/41576877
784 0
XMPP客户端库Smack
原文博客地址:http://blog.csdn.net/chszs/article/details/41576877
950 0
XMPP客户端库Smack 4.0.6版开发之二
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/41576877 XMPP客户端库Smack 4.0.6版开发之二 作者:chszs,转载需注明。
687 0
用snmp4j开发网管应用(一) - SNMP
<p style="">要开发网管应用,SNMP是必学的协议,这里首先对SNMP进行一下简单的介绍和想要开发SNMP协议的内容所需要用到的工具。</p> <p style=""> </p> <p style="">SNMP</p> <p style="">SNMP 协议分为了多个版本,V1太简单,V2加入了一些验证,V3最严谨,下面都是以V2进行说明</p> <p style=""
3672 0
用snmp4j开发网管应用(二) -- 使用snmp4j
<p style="">SNMP协议还算简单</p> <p style="">其实针对协议的开发我们只要知道协议的内容,然后架起Socket服务器,然后用字符串拼出协议内容格式的字符串,使用Socket进行通信就好了。</p> <p style="">针对协议的开源包主要把这些过程封装了。比如SNMP协议。</p> <p style="">我们只需要针对PDU对象编程,然后SNMP4
3947 0
+关注
jieforest
原ChinaUnix博客专家,见:http://blog.chinaunix.net/uid/301743.html
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Thrift下的Node.js跨语言异构
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载