android 中 smack重新登录openfire服务器
来源:互联网 发布:网络电视上的直播软件 编辑:程序博客网 时间:2024/06/10 02:23
一.利用smack 中ReconnectionManager、
在新建Xmpp连接类的时候要加入以下代码:
static {
try {
Class.forName("org.jivesoftware.smack.ReconnectionManager");
} catch (Exception e) {
e.printStackTrace();
}
}
XMPPConnection一定要把setReconnectionAllowed设置为true
private static XMPPConnection openConnection(String url, String pcName) {try {// url、端口,也可以设置连接的服务器名字,地址,端口,用户。Log.i("XmppTool", "url:" + url + " pcname:" + pcName);ConnectionConfiguration connConfig = new ConnectionConfiguration(url, 5222, pcName); connConfig.setReconnectionAllowed(true); // 允许重连 Log.i("XmppTool", connConfig.toString());con = new XMPPConnection(connConfig);Log.i("XmppTool", "1" + con.toString());con.connect();Log.i("XmppTool", "2" + con.toString());} catch (XMPPException xe) {Log.e("XmppToolException", xe.getMessage());xe.printStackTrace();// throw new IllegalStateException(xe);// /add begin 2015.09.25 wangxingtong 处理空指针} catch (NullPointerException e) {e.printStackTrace();}// /add endreturn con;}
完整的xmpp类如下:
import org.jivesoftware.smack.ConnectionConfiguration;import org.jivesoftware.smack.XMPPConnection;import org.jivesoftware.smack.XMPPException;import android.util.Log;/** * Smack连接类 * */public class XmppTool {private static XMPPConnection con;static {try {Class.forName("org.jivesoftware.smack.ReconnectionManager");} catch (Exception e) {e.printStackTrace();}} /** * 连接smack * * @param url * @param pcName */private static XMPPConnection openConnection(String url, String pcName) {try {// url、端口,也可以设置连接的服务器名字,地址,端口,用户。ConnectionConfiguration connConfig = new ConnectionConfiguration(url, 5222, pcName);connConfig.setReconnectionAllowed(true); // 允许重连con = new XMPPConnection(connConfig);con.connect();} catch (XMPPException xe) {xe.printStackTrace();} catch (NullPointerException e) {e.printStackTrace();}return con;}public static synchronized XMPPConnection getConnection(String url,String pcName) {if (con == null) {con = openConnection(url, pcName);}return con;}//其他方法可自行添加}
二.添加ConnectionListener 进行重连
首先新建自己的连接监听,继承自ConnectionListioner
此监听主要是对上一个ReconnectionManager的重连的监听,重连正常时可以自动的重新连接到openfire服务器,出现问题时,就要自行进行重登操作,主要是在重写的重新登录失败的方法reconnectionFailed(Exception arg0) 中进行操作
1.登录成功时要建立监听:
MyConnnectionListerer myConnnectionListerer = new MyConnnectionListerer();XmppTool.getConnection(SERVICE_URL, SERVICE_NAME).addConnectionListener(myConnnectionListerer);
建立自己的连接监听,继承自ConnectinListioner:
public class MyConnnectionListerer implements ConnectionListener {@Overridepublic void connectionClosed() {//当smack连接正常关闭时进行操作//注意当服务器强行使你退出时也会进入的此方法//在此可以进行 reconnectiongFailed中重连操作}@Overridepublic void connectionClosedOnError(Exception arg0) { //当连接异常关闭时进行操作//包括网路连接中断,服务器故障等//在此可以进行 reconnectiongFailed中重连操作}@Overridepublic void reconnectingIn(int arg0) { //正在重新登录openfire服务器}@Overridepublic void reconnectionFailed(Exception arg0) {//重登失败//利用ReconnectionManager重连失败时会进入到此方法//重连操作://无法自动重连时要关闭此连接监听XmppTool.getConnection().removeConnectionListener(myConnnectionListerer);//然后关闭清空Xmpp的连接,再重新启动新的连接进行登录,登录成功后再次添加此监听}@Overridepublic void reconnectionSuccessful() {//ReconnectionManager自动重新登录成功时进行的操作//在掉线时可能会退出群组,在自动重连之后不会重新加入之前加入的群组,需要在此重新加入群组}}
0 0
- android 中 smack重新登录openfire服务器
- Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器
- smack for android 之登录openfire
- smack 登录openfire
- Android openfire smack 源码
- Android openfire smack 源码
- Android+Smack+Openfire
- Android基于XMPP Smack Openfire开发IM(2)登录openfire
- Android基于XMPP Smack Openfire开发IM(2)登录openfire
- Android基于XMPP Smack Openfire开发IM(1)搭建openfire服务器
- 基于Openfire Smack开发即时通讯应用、搭建Openfire服务器(一)
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发送的消息
- Android基于XMPP Smack Openfire开发IM【三】客户端接收服务器发送的消息
- Android IM之基于Openfire+Smack的聊天服务器的搭建与测试
- Android使用XMPP协议、Openfire服务器和Smack类库实现即时通信
- openfire+smack
- openFire+smack
- xmpp openfire smack android IM demo
- 桥接模式
- Python-OpenCV 杂项(二): 鼠标事件
- 一些python模块的安装
- 说说进程与线程的区别与联系
- Android程序里面的进程和线程如何运作的
- android 中 smack重新登录openfire服务器
- Python-OpenCV 杂项(三): 程序性能的检测和优化
- 经纬度计算距离
- Eclipse设置
- Windows下另存为UTF-8,打开是ANSI的问题
- Windows7下VS2010x86平台CGAL安装
- oracle 11g scott用户的加解锁方法以及修改密码
- java生成MD5码跟 mysql生成的MD5码 保持一致!
- 不不成能 《问道》悟道体系重写战役格式