XMPP aSmack - 我怎么能听我自己的用户状态(在线/离线)重新连接

问题描述:

我是新来的xmpp/asmack在android中,我正在寻找一种方法来侦听我自己的用户状态和存在变化服务器。XMPP aSmack - 我怎么能听我自己的用户状态(在线/离线)重新连接

我的目标是恢复连接,如果丢失。

我使用花名册来帮助我获得朋友的存在,但实际上并不是当前用户本身。

任何帮助,将不胜感激:)

最好的问候,

+0

你想要做什么其实? –

+0

我想保持XMPP连接稳定,所以我必须自动重新连接,如果我的用户断开连接(离线)..... – Manar18

您必须启用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

这正是一个正在寻找....谢谢你@MrPk :) – Manar18