Smack介绍
Smack是XMPP协议的的实现库,Smack库易于使用,仅仅几行代码就能实现客户端连接,登陆,发送即时消息。但是由于使用XMPP协议,所以不适合用在高并发的场合。
Smack的使用
本文使用的是4.1.9版本的Smack库来演示,Smack的官方下载地址:http://www.igniterealtime.org/projects/smack/。
下载下来后根据需求进行引入。比如,android平台,要额外引入smack-android-4.1.9.jar和smack-android-extensions-4.1.9库,而且,需要在使用之前进行初始化:
AndroidSmackInitializer androidSmackInitializer=new AndroidSmackInitializer();
androidSmackInitializer.initialize();
而且值得注意的是:Android网络连接需要在子线程中进行。
如果运行在PC端则不需要以上要求。
连接服务器
//配置一个TCP连接
XMPPTCPConnectionConfiguration config =XMPPTCPConnectionConfiguration.builder()
.setServiceName("openfire")//设置服务器名称,可以到openfire服务器管理后台查看
.setHost("localhost")//设置主机
.setPort(5222)//设置端口
.setConnectTimeout(20000)//设置连接超时时间
.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)//设置是否启用安全连接
.build();
XMPPTCPConnection connection = new XMPPTCPConnection(config);//根据配置生成一个连接
connection.connect();//连接到服务器
也可以设置监听连接的状态
connection.addConnectionListener(newConnectionListener() {
@Override
public void connected(XMPPConnection connection) {
//已连接上服务器
}
@Override
public void authenticated(XMPPConnection connection, boolean resumed) {
//已认证
}
@Override
public void connectionClosed() {
//连接已关闭
}
@Override
public void connectionClosedOnError(Exception e) {
//关闭连接发生错误
}
@Override
public void reconnectionSuccessful() {
//重连成功
}