我正在将 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)
这给了我一些时间跟随错误
- 服务器无响应。
- 未连接到服务器。
- 冲突错误
现在我研究了这个问题,发现当我尝试使用相同的资源重新连接时仍然存在连接,所以我得到了错误。我的问题是如何重新连接,正确的程序是什么?
我知道如何解决“XMPP“流:错误(冲突)”问题,因为我可以向 login() 方法提供一个字符串作为第三个参数,它可以解决问题。
这不是我主要关心的问题,我想知道重新连接的过程。我尝试登录所有方法,令人惊讶的是没有调用方法的顺序。