重新连接xmpp服务器中的问题

时间:2014-05-19 13:31:43

标签: android xmpp openfire

我正在使用openfire xmpp服务器和asmack库来实现pubub节点,我面临的最大问题是xmpp服务器的重新连接问题。

每当与xmpp服务器建立连接时,在桌面应用程序或Web应用程序中可能会有大量的节可能被交换,这似乎没问题,但对于3G链接非常弱的移动应用程序,如果交换这么多节,太好了。

我已经测试过,当wifi信号较弱或3g链接断开时,我正在重新连接到服务器(在后台进程中)但我主要得到响应超时错误并且如果连接花费太多时间获得成功。

我已经看过像whatsapp这样的信使,他们正在快速重新连接。我想做那样的事。

我已经读过关于pre-http绑定但是它存在于ejabber但是在openfire中没有找到任何东西而且htt-prebinding是匿名用户而我只使用注册用户。

所以任何人都可以告诉我如何快速重新连接到xmpp服务器。

代码段

    Boolean onlyConnect  = arg[0];

    try {



        if(xmpp!= null && !xmpp.isConnected())

        xmpp.connect();


    } catch(BOSHTimeoutException e){


        Log.e("XConnection " , "Timeout occures");

              // make a reconnection here



        return false;

    }


    catch(ConnectionException e){

        CatchErrors("ConnectionException" , "xmpp.connect()");

        e.printStackTrace();
    }catch(NoResponseException e){

        CatchErrors("NoResponseException" , "xmpp.connect()");

                // make a reconnection here


        return false;


    }catch (XMPPException e1) {
        // TODO Auto-generated catch block

        CatchErrors("XMPPException" , "xmpp.connect()");

        e1.printStackTrace();

        return false;



    } catch (SmackException e) {

        CatchErrors("SmackException" , "xmpp.connect()");

        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        CatchErrors("IOException" , "xmpp.connect()");

        e.printStackTrace();
    }

    try {




           Log.e("LOGIN REQUIRED " , "LOGIN IN");

     xmpp.login(XMPP_USER_NAME, XMPP_PASSWORD, "sh");



    } catch (XMPPException e) {
        // TODO Auto-generated catch block

        CatchErrors("XMPPException" , "xmpp.login()");

        e.printStackTrace();

        return false;
    } catch(NoResponseException e){


         Log.e("LOGIN REQUIRED " , "NoResponseException");

        CatchErrors("NoResponseException" , "xmpp.login()");

        //make a reconnection here
        return false;


    }catch (SaslException e) {
        // TODO Auto-generated catch block
        CatchErrors("SaslException" , "xmpp.login()");

        e.printStackTrace();
    } catch (SmackException e) {
        // TODO Auto-generated catch block
        CatchErrors("SmackException" , "xmpp.login()");

        e.printStackTrace();
    } catch (IOException e) {

        CatchErrors("IOException" , "xmpp.login()");

        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return true;
}

0 个答案:

没有答案