Experimento un comportamiento bastante extraño con smack para crear un pequeño cliente/bot XMPP. Configuré la conexión, así como ConnectionListener y ChatManagerListener. Esto funciona bastante bien y luego puedo chatear con mi aplicación que se ejecuta en un dispositivo portátil.Smack Client: el usuario aún está "en línea" aunque se ha cancelado la conexión
Para probar el comportamiento en la conexión perdida he enchufado el cable de ethernet del dispositivo portátil. Esperaba que el cliente XMPP perdiera la conexión y que el usuario se establecerá 'fuera de línea' en la lista de amigos de los usuarios. Lo que ocurre es que este usuario todavía se muestra como "en línea" y ConnectionListener de mi cliente no activa nada, ya sea connectionClosed o reconnectionFailed o de lo contrario.
Cuando vuelva a enchufar el cable de ethernet, a veces es como si la conexión hubiera estado activa todo el tiempo. Los mensajes fuera de línea se manejan y puedo volver a chatear como antes. Otras veces mi cliente es totalmente inaccesible y está fuera de servicio, parece que todos los oyentes se han ido ... Pero no se escuchan exclamaciones.
Ese es un comportamiento bastante extraño e incontrolable que haría inutilizable todo el cliente para mí, ya que no puedo estar seguro de que el cliente volverá a aparecer después de que se haya iniciado la conexión.
¿Alguien más ha experimentado tales problemas o tiene alguna pista de lo que (no) está sucediendo?
Si es necesario, puedo proporcionar mi código, pero en realidad solo copie & pegue de la documentación de Smack.
Gracias por las aclaraciones, podrían ayudarme. Tal vez sea más paciente y espere más de 1-2 minutos antes de volver a enchufar el cable. De todos modos, el problema de los oyentes a veces se mantiene sintonizado y, a veces no es todavía un misterio. Pero creo que voy a abrir otra pregunta para eso. – signpainter
Me gustaría agregar que este comportamiento de TCP no es un error, sino una gran característica que pocas personas parecen apreciar.No necesitar volver a conectarse y realizar la configuración de flujo de XMPP bastante costosa le ahorra muchos viajes de ida y vuelta. Lo que probablemente desee es que el sistema operativo le informe acerca de la pérdida y la reanudación de la conectividad para que luego pueda verificar si la conexión sobrevivió. Si lo hizo, corre como si nada hubiera sucedido, de lo contrario vuelve a conectar. La reconexión XEP-0198 también es increíble. – Zash