2017-01-23 20 views
0

私はxmpp/asmackをAndroidで使い慣れていません。自分のユーザー状態とプレゼンス変更をリッスンする方法を探していますサーバー。XMPP aSmack - 自分のユーザー状態(オンライン/オフライン)で再接続するにはどうすればいいですか?

紛失した場合は復元接続をターゲットにします。

私は友達のプレゼンスを取得するのに役立つが実際には現在のユーザーそのものではない。

任意の助けいただければ幸い:)

敬具、

+0

を受け入れることを忘れないでください。実際に? –

+0

私はXMPP接続を安定した状態に保ちたいので、ユーザーが切断された場合に自動的に再接続する必要があります.....(オフライン)..... – Manar18

答えて

0

をあなたはReconectionManagerを有効にする必要があります。

例:

XmppManager.config = XMPPTCPConnectionConfiguration.builder() 
      .setServiceName(serverName) 
      .setHost(server) 
      .setPort(port) 
      .build(); 

    connection = new XMPPTCPConnection(config); 

ConnectionListener connectionListener = new ConnectionListener(){...}; // 
connection.addConnectionListener(connectionListener); 

int RECONNECTION_ATTEMPT_SECONDS = 60; 

ReconnectionManager.getInstanceFor(connection).enableAutomaticReconnection(); 
ReconnectionManager.getInstanceFor(connection).setFixedDelay(RECONNECTION_ATTEMPT_SECONDS); 

ReconnectionListenerは次のようになります。

public class ReconnectionListener implements ConnectionListener 
    { 

     @Override 
     public void reconnectionSuccessful() 
     { 
      System.out.println("Connection to chat server restored - You are again online"); 

    //additional foo when connection restored 
     } 

     @Override 
     public void reconnectionFailed(Exception e) 
     { 
      System.out.println("Impossible to reconnect, Chat Server seems to be still unavailable"); 

     } 

     @Override 
     public void reconnectingIn(int seconds) 
     { 
      System.out.println("reconnectingIn fired "+seconds); 
     } 

     @Override 
     public void connectionClosedOnError(Exception e) 
     { 
      System.out.println("Connection closed, Chat Server become unavailable"); 
    //additional foo when connection lost (message to user ?) 
     } 

     @Override 
     public void connectionClosed() 
     { 
      // "XMPP connection was closed."); 
      System.out.println("Connection closed, Chat Server become unavailable"); 
     } 

     @Override 
     public void connected(XMPPConnection connection) 
     { 
      System.out.println("connected fired - reconnection management enabled"); 
     } 

     @Override 
     public void authenticated(XMPPConnection connection, boolean resumed) 
     { 
      System.out.println("authenticated fired");  
     } 

    } 

それが助け場合は、その答え:)あなたが何をしたいのか

+0

これはまさにAが探していたものです。 – Manar18