Я использую сервер Smack и Openfire для клиента чата, все работает хорошо, как чат, отправка приглашения для нового добавления пользователя, получение списка доступных пользователей и т. д. Я понятия не имею, что делать, если соединение в Sticky Service, и я добавил прослушиватель соединения к соединению, и соединение было отключено, скажем, для «Подключения к Интернету»
Я использую приведенный ниже код для прослушивателя соединений.
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 «поток: ошибка (конфликт)», поскольку я могу предоставить метод String для входа () в качестве третьего параметра, и это решает проблему.
Это не моя главная забота, я хочу знать процедуру переподключения. Я попытался войти во все методы, и довольно удивительно, что порядок вызова методов отсутствует.