8

我正在将 Smack 和 Openfire 服务器用于聊天客户端,所有事情都运行良好,例如聊天、为新添加的用户发送邀请、获取可用用户列表等。如果连接正常,我不知道该怎么做在粘性服务中,我向连接添加了一个连接侦听器,并且连接断开,比如说“Internet 连接”

我将以下代码用于连接侦听器。

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.");

                }
            }); 

所以我想在 connectionClosedOnError() 中添加两行代码,即

 connection.disconnect(new Presence(Presence.Type.unavailable));
 //code for connection(new one)

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

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

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

我知道如何解决“XMPP“流:错误(冲突)”问题,因为我可以向 login() 方法提供一个字符串作为第三个参数,它可以解决问题。

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

4

0 回答 0