XMPP «поток: ошибка (конфликт)» при попытке повторного подключения или входа в систему

Я использую сервер 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)

Что дает мне некоторое время после ошибки

  1. Нет ответа от сервера.
  2. Не подключен к серверу.
  3. ошибка конфликта

Теперь я исследовал проблему и обнаружил, что соединение все еще существует, когда я пытаюсь повторно подключиться с использованием того же ресурса, поэтому я получил ошибки. Мой вопрос в том, как сделать переподключение и какова правильная процедура для этого?

Я знаю, как решить проблему «XMPP «поток: ошибка (конфликт)», поскольку я могу предоставить метод String для входа () в качестве третьего параметра, и это решает проблему.

Это не моя главная забота, я хочу знать процедуру переподключения. Я попытался войти во все методы, и довольно удивительно, что порядок вызова методов отсутствует.


person Saty    schedule 29.07.2014    source источник
comment
Да, @Flow, это правда, однако я пришел сюда после прочтения этого поста ... Я не нашел там большого решения. Мой вопрос в том, какова правильная процедура переподключения, потому что я пытался зарегистрировать методы в connectionlistener и обнаружил, что если я отключу Интернет, он сначала вызовет connectionClosedOnError(), затем ничего не произойдет ... поэтому я хочу спросить, правильно ли это поведения и для чего нужны другие методы? и он не продолжает вызывать методы в слушателе. Пожалуйста, дайте мне некоторое представление.   -  person Saty    schedule 30.07.2014
comment
Здравствуйте, @Saty, я столкнулся с той же ошибкой, вы нашли правильный путь?   -  person Joseph Mekwan    schedule 05.11.2015
comment
Прости, Джозеф... Я отказываюсь от этого проекта, потому что не смог завершить его вовремя из-за той же проблемы. Тогда я никогда не использовал его   -  person Saty    schedule 05.11.2015