XMPP客户端库Smack 4.0.6版开发之一

时间:2021-02-14 19:53:56

XMPP客户端库Smack 4.0.6版开发之一

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

一、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过滤器被移除了