Я столкнулся с довольно странным поведением, используя smack для создания небольшого XMPP-клиента/бота. Я установил соединение, а также ConnectionListener и ChatManagerListener. Это прекрасно работает, и я могу общаться со своим приложением, которое работает на переносном устройстве.
Чтобы проверить поведение при потере соединения, я отключил кабель Ethernet портативного устройства. Я ожидал, что клиент XMPP потеряет соединение и что пользователь будет отключен в списке друзей пользователей. Что происходит, так это то, что этот пользователь по-прежнему отображается как «онлайн», а ConnectionListener моего клиента ничего не запускает, будь то connectionClosed или reconnectionFailed или что-то еще.
Когда я снова подсоединяю кабель Ethernet, иногда мне кажется, что соединение было активным все время. Автономные сообщения обрабатываются, и я снова могу общаться в чате, как и раньше. В других случаях мой клиент полностью недоступен и не в порядке, кажется, что все слушатели ушли... Но никаких исключений не выдается.
Это довольно странное и неконтролируемое поведение, которое сделало бы весь клиент непригодным для меня, так как я не могу быть уверен, что клиент снова заработает после того, как соединение было прервано.
Кто-нибудь еще сталкивался с такими проблемами или есть намеки на то, что (не) происходит?
При необходимости я могу предоставить свой код, но на самом деле это просто копирование и вставка из документации Smack.