Ich erlebe ein ziemlich seltsames Verhalten mit Smack, um einen kleinen XMPP Client/Bot zu bauen. Ich habe die Verbindung sowie einen ConnectionListener und einen ChatManagerListener eingerichtet. Das funktioniert ganz gut und ich kann dann mit meiner Anwendung chatten, die auf einem tragbaren Gerät läuft.Smack Client - Benutzer ist immer noch "online" obwohl Verbindung abgebrochen
Um das Verhalten bei verlorener Verbindung zu testen, steckte ich das Ethernet-Kabel des tragbaren Geräts aus. Ich erwartete, dass der XMPP-Client die Verbindung verliert und dass der Benutzer in der Liste der Benutzer-Buddys "offline" gesetzt wird. Was passiert, ist, dass dieser Benutzer immer noch als 'online' angezeigt wird und der ConnectionListener meines Clients nichts auslöst, egal ob connectClosed oder reconnectionFailed oder anders.
Wenn ich dann das Ethernetkabel wieder einstecke, ist es manchmal so, als wäre die Verbindung die ganze Zeit über am Leben. Die Offline-Nachrichten werden behandelt und ich kann wieder wie zuvor chatten. Andere Zeiten mein Client ist völlig unzugänglich und außer Betrieb, scheint wie alle Zuhörer weg sind ... Aber keine Ausnahmen werden geworfen.
Das ist ein ziemlich merkwürdiges und unkontrollierbares Verhalten, das den ganzen Client für mich unbrauchbar machen würde, da ich nicht sicher sein kann, dass der Client wieder auftaucht, nachdem die Verbindung unterbrochen wurde.
Hat jemand andere solche Probleme oder Hinweise, was (nicht) passiert?
Bei Bedarf kann ich meinen Code zur Verfügung stellen, aber es ist eigentlich nur kopieren & Paste aus der Smack-Dokumentation.
Danke für die Klarstellung gegangen sind, könnten sie mir helfen. Vielleicht werde ich geduldiger und warte mehr als 1-2 Minuten bevor ich das Kabel wieder einstecke. Jedenfalls ist das Problem, dass die Zuhörer manchmal dran bleiben und manchmal nicht, immer noch ein Geheimnis. Aber ich denke, ich werde dafür eine andere Frage aufwerfen. – signpainter
Ich möchte hinzufügen, dass dieses Verhalten von TCP kein Fehler ist, sondern ein großartiges Feature, das nur wenige Menschen zu schätzen wissen.Nicht um die recht teuer XMPP-Stream-Setup viel Rundreisen erspart Ihnen zu verbinden und zu tun. Was Sie wahrscheinlich wollen, ist für die OS Sie über den Verlust zu sagen, und die Wiederaufnahme, der Konnektivität, so dass Sie dann überprüfen, ob die Verbindung überlebt. Wenn ja, laufen entlang, als wäre nichts geschehen, sonst wieder an. XEP-0198 Reconnection ist auch super. – Zash