Я использую smack 4.1.7 как свою библиотеку xmpp на Android и openfire как мой сервер. Я получаю исключение, когда я пытаюсь принудительно переподключиться, как только устройство выйдет из режима полета в самолете. В обычном рабочем процессе я не получаю это исключение. Я хочу, чтобы мое приложение поддерживало автономный режим, поэтому я должен убедиться, что происходит плавный переход из автономного режима в онлайн. Я использую режим самолета, чтобы проверить этот сценарий.Smack4.1.7 Ответа не получено в течение таймаута ответа
Я использую диспетчер пересоединения, чтобы обрабатывать повторное соединение с фиксированной задержкой в 20 секунд. Я принудительно переподключаю, потому что я не хочу, чтобы пользователь подождал 20 секунд для повторного соединения xmpp, если пользователь уже находится в приложении. Вот почему я полагаюсь на диспетчер пересоединения для повторного подключения только тогда, когда приложение находится в фоновом режиме. Надеюсь, это поможет понять, что я пытаюсь сделать здесь.
Я отправляю трассировки стека с режимом отладки Смак включена на Android:
07-26 13:55:45.154 com.myapp.xmpptest I/XmppService: Network state changed. Network connected.
07-26 13:55:45.154 com.myapp.xmpptest I/XmppService: Before xmppConnection connect.....
07-26 13:55:45.174 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 14
07-26 13:55:45.324 com.myapp.xmpptest D/SMACK: SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='[email protected]' xml:lang='en'>
07-26 13:55:45.404 com.myapp.xmpptest D/SMACK: RECV (0): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="myapp.com" id="bde2ec9" xml:lang="en" version="1.0">
07-26 13:55:45.484 com.myapp.xmpptest D/SMACK: RECV (0): <stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required/></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanis ms></stream:features>
07-26 13:55:45.484 com.myapp.xmpptest D/SMACK: SENT (0): <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'></starttls>
07-26 13:55:45.564 com.myapp.xmpptest D/SMACK: RECV (0): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
07-26 13:55:46.174 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 13
07-26 13:55:46.194 com.myapp.xmpptest D/SMACK: SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='[email protected]' xml:lang='en'>
07-26 13:55:46.274 com.myapp.xmpptest D/SMACK: RECV (0): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="myapp.com" id="bde2ec9" xml:lang="en" version="1.0"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanis ms><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth"/></stream:features>
07-26 13:55:46.284 com.myapp.xmpptest D/xmppTest: XmppConnectionListener connectionConnected()
07-26 13:55:46.284 com.myapp.xmpptest D/SMACK: XMPPConnection connected (0)
07-26 13:55:46.284 com.myapp.xmpptest D/SMACK: SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>HJKSHGFJHJGKHDJHGJEHJKRHGJKFDHGhjshjkghruiehskrjgbjkeh5j4568o gjkfhdsgh589wwghjfdghsuHJKSHFIREHGHRUEIghgfhjdgsu87489YUFSfh483fhj==</auth>
07-26 13:55:47.174 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 12
07-26 13:55:47.174 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 0
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: No filter used or filter was 'null'.
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java: 250)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginNonAnonymously(XMPPTCPConnect ion.java:374)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :456)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :414)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection. java:863)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.ja va:364)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at com.myapp.xmpp.XmppService.connectAndAuthenticate(XmppService.java:492)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at com.myapp.xmpp.XmppService$2.run(XmppService.java:195)
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 13:55:51.293 com.myapp.xmpptest I/XmppService: Before xmppConnection login.....
07-26 13:55:51.293 com.myapp.xmpptest W/AbstractXMPPConnection: Connection closed with error
javax.net.ssl.SSLException: Read error: ssl=0x9abd4400: I/O error during system call, Connection timed out
at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketIm pl.java:753)
at java.io.InputStreamReader.read(InputStreamReader.java:231)
at java.io.BufferedReader.read(BufferedReader.java:325)
at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:41)
at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)
at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPC onnection.java:1173)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPCon nection.java:952)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnecti on.java:967)
at java.lang.Thread.run(Thread.java:818)
07-26 13:55:51.293 com.myapp.xmpptest D/xmppTest: XmppConnectionListener connectionClosedOnError()
07-26 13:55:51.293 com.myapp.xmpptest W/System.err: javax.net.ssl.SSLException: Read error: ssl=0x9abd4400: I/O error during system call, Connection timed out
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketIm pl.java:753)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.io.InputStreamReader.read(InputStreamReader.java:231)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.io.BufferedReader.read(BufferedReader.java:325)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:41)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPC onnection.java:1173)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPCon nection.java:952)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnecti on.java:967)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 13:55:51.303 com.myapp.xmpptest D/SMACK: XMPPConnection closed due to an exception (0)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: javax.net.ssl.SSLException: Read error: ssl=0x9abd4400: I/O error during system call, Connection timed out
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketIm pl.java:753)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.io.InputStreamReader.read(InputStreamReader.java:231)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.io.BufferedReader.read(BufferedReader.java:325)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:41)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPC onnection.java:1173)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPCon nection.java:952)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnecti on.java:967)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: org.jivesoftware.smack.SmackException$NotConnectedException: Client is not, or no longer, connected.
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.throwNotConnectedExce ptionIfDoneAndResumptionNotPossible(XMPPTCPConnection.java:1248)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection.throwNotConnectedExceptionIfApprop riate(XMPPTCPConnection.java:345)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :451)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :414)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.ReconnectionManager$2.run(ReconnectionManager.java:248)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 13:55:51.303 com.myapp.xmpptest D/xmppTest: XmppConnectionListener reconnectionFailed()
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: org.jivesoftware.smack.SmackException$NotConnectedException: Client is not, or no longer, connected.
07-26 13:55:51.303 com.myapp.xmpptest D/SMACK: Reconnection failed due to an exception (0)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.throwNotConnectedExce ptionIfDoneAndResumptionNotPossible(XMPPTCPConnection.java:1248)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.SmackException$NotConnectedException: Client is not, or no longer, connected.
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.throwNotConnectedExce ptionIfDoneAndResumptionNotPossible(XMPPTCPConnection.java:1248)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.tcp.XMPPTCPConnection.throwNotConnectedExceptionIfApprop riate(XMPPTCPConnection.java:345)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :451)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :414)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.ReconnectionManager$2.run(ReconnectionManager.java:248)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: org.jivesoftware.smack.tcp.XMPPTCPConnection.throwNotConnectedExceptionIfApprop riate(XMPPTCPConnection.java:345)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java :451)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at com.myapp.xmpp.XmppService.connectAndAuthenticate(XmppService.java:538)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at com.myapp.xmpp.XmppService$2.run(XmppService.java:195)
07-26 13:55:51.303 com.myapp.xmpptest W/System.err: at java.lang.Thread.run(Thread.java:818)
07-26 13:55:52.303 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 19
07-26 13:55:53.303 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 18
07-26 13:55:54.303 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 17
07-26 13:55:55.303 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 16
07-26 13:55:56.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 15
07-26 13:55:57.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 14
07-26 13:55:58.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 13
07-26 13:55:59.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 12
07-26 13:56:00.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 11
07-26 13:56:01.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 10
07-26 13:56:02.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 9
07-26 13:56:03.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 8
07-26 13:56:04.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 7
07-26 13:56:05.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 6
07-26 13:56:06.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 5
07-26 13:56:07.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 4
07-26 13:56:08.323 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 3
07-26 13:56:09.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 2
07-26 13:56:10.313 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 1
07-26 13:56:11.323 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 0
07-26 13:56:11.323 com.myapp.xmpptest D/SMACK: XMPPConnection (0) will reconnect in 0
07-26 13:56:11.373 com.myapp.xmpptest D/SMACK: SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='[email protected]' xml:lang='en'>
07-26 13:56:11.403 com.myapp.xmpptest D/SMACK: RECV (0): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="myapp.com" id="8dbb465e" xml:lang="en" version="1.0">
07-26 13:56:11.433 com.myapp.xmpptest D/SMACK: RECV (0): <stream:features><starttls xmlns="urn:ietf:params:xml:ns:xmpp-tls"><required/></starttls><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanis ms></stream:features>
07-26 13:56:11.443 com.myapp.xmpptest D/SMACK: SENT (0): <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'></starttls>
07-26 13:56:11.473 com.myapp.xmpptest D/SMACK: RECV (0): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>
07-26 13:56:11.963 com.myapp.xmpptest D/SMACK: SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='[email protected]' xml:lang='en'>
07-26 13:56:12.003 com.myapp.xmpptest D/SMACK: RECV (0): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="myapp.com" id="8dbb465e" xml:lang="en" version="1.0"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanis ms><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth"/></stream:features>
07-26 13:56:12.003 com.myapp.xmpptest D/xmppTest: XmppConnectionListener connectionConnected()
07-26 13:56:12.003 com.myapp.xmpptest D/SMACK: XMPPConnection connected (0)
07-26 13:56:12.003 com.myapp.xmpptest D/SMACK: SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>HJKSHGFJHJGKHDJHGJEHJKRHGJKFDHGhjshjkghruiehskrjgbjkeh5j4568o gjkfhdsgh589wwghjfdghsuHJKSHFIREHGHRUEIghgfhjdgsu87489YUFSfh483fhj==</auth>
07-26 13:56:12.223 com.myapp.xmpptest D/SMACK: RECV (0): <success xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
07-26 13:56:12.223 com.myapp.xmpptest D/SMACK: SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='[email protected]' id='8dbb465e' xml:lang='en'>
07-26 13:56:12.253 com.myapp.xmpptest D/SMACK: RECV (0): <?xml version='1.0' encoding='UTF-8'?><stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="myapp.com" id="8dbb465e" xml:lang="en" version="1.0"><stream:features><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"/></stream:features>
07-26 13:56:12.253 com.myapp.xmpptest D/SMACK: SENT (0): <iq id='H0v5c-22' type='set'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>d73d639de6435579</resource>< /bind></iq>
07-26 13:56:12.283 com.myapp.xmpptest D/SMACK: RECV (0): <iq type="result" id="H0v5c-22" to="myapp.com/8dbb465e"><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><jid>[email protected]/d73d639de6435579</jid></bind></iq>
07-26 13:56:12.293 com.myapp.xmpptest D/SMACK: SENT (0): <iq id='H0v5c-24' type='set'><session xmlns='urn:ietf:params:xml:ns:xmpp-session'/></iq>
07-26 13:56:12.323 com.myapp.xmpptest D/SMACK: RECV (0): <iq type="result" id="H0v5c-24" to="[email protected]/d73d639de6435579"/>
07-26 13:56:12.323 com.myapp.xmpptest D/SMACK: User logged (0):[email protected]:5222/d73d639de6435579
07-26 13:56:12.323 com.myapp.xmpptest D/xmppTest: XmppConnectionListener authenticated(). resumed : false
07-26 13:56:12.323 com.myapp.xmpptest D/xmppTest: joining control room
07-26 13:56:12.323 com.myapp.xmpptest D/SMACK: XMPPConnection authenticated (0)
07-26 13:56:12.323 com.myapp.xmpptest D/xmppTest: XmppConnectionListener reconnectionSuccessful()
07-26 13:56:12.323 com.myapp.xmpptest D/SMACK: SENT (0): <presence id='H0v5c-26'><c xmlns='http://jabber.org/protocol/caps' hash='sha-1' node='http://www.igniterealtime.org/projects/smack' ver='zIfK69gJkJ5OCxMILmZOsZ9HBlU='/></presence>
07-26 13:56:12.323 com.myapp.xmpptest D/SMACK: SENT (0): <presenceto='[email protected]/[email protected]' id='H0v5c-27' type='unavailable'></presence>
Если я правильно понял из бревен, я получаю исключение при попытке немедленно восстановить в случае изменения сети, когда устройство подключается к Интернету из режима самолета. Однако в конечном итоге он подключается через диспетчер пересоединения. Код, который я использую для запуска XMPP подключения и Войти следующим образом:
// The network monitor
private BroadcastReceiver networkMonitor = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (isOnline && !Utilities.isOnline(AbstractActivity.this)) {
isOnline = false;
} else if (!isOnline && Utilities.isOnline(AbstractActivity.this)) {
// Trigger only when going from offline to online
isOnline = Utilities.isOnline(AbstractActivity.this);
// Re-establish the xmpp connection if it was disconnected
if (isOnline) {
connectAndAuthenticate();
}
}
}
};
public void connectAndAuthenticate() {
if(xmppConnection==null){
XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(hashedUserName, getPassword())
.setServiceName(serviceName)
.setHost(getCoreServer())
.setSendPresence(true)
.setSecurityMode(ConnectionConfiguration.SecurityMode.required)
.setPort(Integer.parseInt(port))
.setResource(getDeviceID());
if (BuildConfig.DEBUG) {
builder.setDebuggerEnabled(true);
}
XMPPTCPConnectionConfiguration config = builder.build();
xmppConnection = new MVXMPPTCPConnection(config);
// Disable the roster
Roster.getInstanceFor(xmppConnection).setRosterLoadedAtLogin(false);
ReconnectionManager reconnectionManager = ReconnectionManager.getInstanceFor(xmppConnection);
reconnectionManager.enableAutomaticReconnection();
reconnectionManager.setReconnectionPolicy(ReconnectionManager.ReconnectionPolic y.FIXED_DELAY);
reconnectionManager.setFixedDelay(20);
PingManager pingManager = PingManager.getInstanceFor(xmppConnection);
pingManager.registerPingFailedListener(this);
pingManager.setPingInterval(60);
// Instantiates a ChatStateManager.
ChatStateManager.getInstance(xmppConnection);
}
// connect
try {
Log.i(TAG, "Before xmppConnection connect.....");
xmppConnection.connect();
Log.i(TAG, "After xmppConnection connect.....");
} catch (SmackException.AlreadyConnectedException e) {
e.printStackTrace();
} catch (SmackException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
// login
try {
Log.i(TAG, "Before xmppConnection login.....");
xmppConnection.login(hashedUserName, getPassword(), getDeviceID());
Log.i(TAG, "After xmppConnection login.....");
// return
} catch (SmackException.AlreadyLoggedInException e) {
e.printStackTrace();
} catch (SmackException.ConnectionException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
Я получаю много этих ошибок. Кто-нибудь может помочь мне здесь. Я много искал в google с едва ли результатом. Я также опубликовал эту проблему в сообществе поддержки Smack, но пока не слышал от кого-то еще.
PS: Я исчерпал количество строк, которые я могу добавить в части тела здесь, поэтому я отправляю журналы журналов openfire в качестве ответа, поскольку я не знаю, как включить все в надлежащем формате, не разбивая их таким образом , Я прошу прощения за это.
, так как с помощью диспетчера пересоединения, почему вы объясняете логин, а затем при изменении соединения? менеджер пересоединения не будет обрабатывать это? – Farhan
Менеджер пересоединения совершает повторное подключение каждые 20 секунд. Когда пользователь находится в приложении, я не хочу, чтобы пользователь ждал 20 секунд, пока приложение не вышло в сеть, поэтому я пытаюсь подключиться, как только узнаю, что установлено интернет-соединение. Я полагаюсь на менеджера пересоединения, чтобы снова подключиться, пока приложение находится в фоновом режиме. Благодарю. – rbing