尝试重新连接或登录时XMPP"stream:error(conflict)"

Sat*_*aty 7 android xmpp smack user-presence

我正在使用Smack和Openfire服务器作为聊天客户端,所有工作都很好,比如聊天,发送新用户的邀请,获取可用用户列表等等.我不知道如果连接是什么怎么办在粘性服务中我添加了一个连接监听器连接和连接断开连接,让我们说"Internet连接"

我正在使用以下代码作为connectionlistener.

connection.addConnectionListener(new ConnectionListener() {

                @Override
                public void reconnectionSuccessful() {
                    Log.i("","Successfully reconnected to the XMPP server.");

                }

                @Override
                public void reconnectionFailed(Exception arg0) {
                    Log.i("","Failed to reconnect to the XMPP server.");
                }

                @Override
                public void reconnectingIn(int seconds) {
                    Log.i("","Reconnecting in " + seconds + " seconds.");
                }

                @Override
                public void connectionClosedOnError(Exception arg0) {
                    Log.i("","Connection to XMPP server was lost.");                   
                    Log.v("ONMESSAGE", "Error was " + arg0.toString() + "and Now connecting");

                }

                @Override
                public void connectionClosed() {
                    Log.i("","XMPP connection was closed.");

                }
            }); 
Run Code Online (Sandbox Code Playgroud)

所以我想到将两行代码添加到connectionClosedOnError()即

 connection.disconnect(new Presence(Presence.Type.unavailable));
 //code for connection(new one)
Run Code Online (Sandbox Code Playgroud)

这给了我一些时间跟踪错误

  1. 服务器无响应.
  2. 未连接到服务器.
  3. 冲突错误

现在我研究了这个问题,发现当我尝试使用相同的资源重新连接时仍然存在连接,因此我得到了错误.我的问题是如何重新连接以及正确的程序是什么?

我知道如何解决这个问题"XMPP'流:错误(冲突)’我可以提供一个字符串登录()方法的第三个参数,它解决了问题.

这不是我主要关注的问题,我想知道重新连接的程序.我尝试登录所有方法,并且令人惊讶的是没有调用方法的顺序.