Smack4.1.7在回复超时内未收到任何回复

时间:2016-09-05 16:45:35

标签: android xmpp openfire smack

我使用smack 4.1.7作为我在android上的xmpp库和openfire作为我的服务器。一旦设备从飞行模式上线,我尝试强力重新连接时会出现异常。在正常的工作流程中,我没有得到这个例外。我希望我的应用程序支持离线模式,因此我必须确保从离线模式到在线模式的平稳过渡。我使用飞行模式来测试这种情况。

我正在使用重新连接管理器以20秒的固定延迟处理重新连接。我强制重新连接,因为如果用户已经在应用程序中,我不希望用户等待20秒以进行xmpp重新连接。这就是为什么我依靠重新连接管理器仅在应用程序处于后台时才重新连接。我希望这有助于理解我在这里要做的事情。

我在Android上启用Smack调试模式发布堆栈跟踪:

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='eaf60f002867230766bb74b4419dffca@myapp.com' 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='eaf60f002867230766bb74b4419dffca@myapp.com' 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='eaf60f002867230766bb74b4419dffca@myapp.com' 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='eaf60f002867230766bb74b4419dffca@myapp.com' 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='eaf60f002867230766bb74b4419dffca@myapp.com' 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>eaf60f002867230766bb74b4419dffca@myapp.com/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="eaf60f002867230766bb74b4419dffca@myapp.com/d73d639de6435579"/>
07-26 13:56:12.323 com.myapp.xmpptest D/SMACK: User logged (0):eaf60f002867230766bb74b4419dffca@myapp.com: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='controlroom@conference.myapp.com/eaf60f002867230766bb74b4419dffca@myapp.com' id='H0v5c-27' type='unavailable'></presence>

如果我从日志中正确理解,当我尝试在网络更改事件中立即重新连接时,当设备从飞行模式连接到互联网时,我会收到异常。但它最终会通过重新连接管理器进行连接。我用来触发xmpp connect和login的代码如下:

// 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();
        }
    }

我收到很多这些错误。有人可以帮帮我吗。我在谷歌搜索了很多,几乎没有任何结果。我也在Smack支持社区发布了这个问题,但还没有收到任何人的回复。

PS:我已经耗尽了我可以在这里添加身体部位的行数,所以我发布了openfire服务器日志作为答案,因为我不知道如何以正确的格式包含所有内容而不会像这样打破它们。我为它道歉。

2 个答案:

答案 0 :(得分:0)

来自openfire服务器的日志:

2016.08.24 07:24:30 org.jivesoftware.openfire.nio.ConnectionHandler - ConnectionHandler reports IOException for session: (SOCKET, R: /70.198.72.125:5004, L: /172.16.23.40:5222, S: 0.0.0.0/0.0.0.0:5222)
javax.net.ssl.SSLHandshakeException: SSL handshake failed.
at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:416)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
at org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived (AbstractIoFilterChain.java:499)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(Abstra ctIoFilterChain.java:293)
at org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.j ava:228)
at org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcesso r.java:198)
at org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProce ssor.java:45)
at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProce ssor.java:485)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
at sun.security.ssl.EngineInputRecord.bytesInCompletePacket(Unknown Source)
at sun.security.ssl.SSLEngineImpl.readNetRecord(Unknown Source)
at sun.security.ssl.SSLEngineImpl.unwrap(Unknown Source)
at javax.net.ssl.SSLEngine.unwrap(Unknown Source)
at org.apache.mina.filter.support.SSLHandler.unwrap0(SSLHandler.java:668)
at org.apache.mina.filter.support.SSLHandler.unwrapHandshake(SSLHandler.java:624)
at org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:503)
at org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:306)
at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:392)
... 14 more
2016.08.24 07:24:56 org.jivesoftware.openfire.nio.ConnectionHandler - ConnectionHandler reports IOException for session: (SOCKET, R: /70.198.72.125:5016, L: /172.16.23.40:5222, S: 0.0.0.0/0.0.0.0:5222)
javax.net.ssl.SSLHandshakeException: SSL handshake failed.
at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:416)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)
at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)
at org.apache.mina.common.support.AbstractIoFilterChain$HeadFilter.messageReceived (AbstractIoFilterChain.java:499)
at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)
at org.apache.mina.common.support.AbstractIoFilterChain.fireMessageReceived(Abstra ctIoFilterChain.java:293)
at org.apache.mina.transport.socket.nio.SocketIoProcessor.read(SocketIoProcessor.j ava:228)
at org.apache.mina.transport.socket.nio.SocketIoProcessor.process(SocketIoProcesso r.java:198)
at org.apache.mina.transport.socket.nio.SocketIoProcessor.access$400(SocketIoProce ssor.java:45)
at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProce ssor.java:485)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: javax.net.ssl.SSLException: Unsupported record version Unknown-97.117
at sun.security.ssl.InputRecord.checkRecordVersion(Unknown Source)
at sun.security.ssl.EngineInputRecord.bytesInCompletePacket(Unknown Source)
at sun.security.ssl.SSLEngineImpl.readNetRecord(Unknown Source)
at sun.security.ssl.SSLEngineImpl.unwrap(Unknown Source)
at javax.net.ssl.SSLEngine.unwrap(Unknown Source)
at org.apache.mina.filter.support.SSLHandler.unwrap0(SSLHandler.java:668)
at org.apache.mina.filter.support.SSLHandler.unwrapHandshake(SSLHandler.java:624)
at org.apache.mina.filter.support.SSLHandler.handshake(SSLHandler.java:503)
at org.apache.mina.filter.support.SSLHandler.messageReceived(SSLHandler.java:306)
at org.apache.mina.filter.SSLFilter.messageReceived(SSLFilter.java:392)
... 14 more

如果我需要更多信息,请告诉我。

<强>更新 以下是一些可能提供更多信息的客户端日志。

09-14 02:09:07.130 10994 12986 D SMACK   : SENT (0): <iq to='controlroom@conference.myapp.com' id='JQYId-1396' type='get'><query xmlns='http://jabber.org/protocol/muc#owner'></query></iq>
09-14 02:09:07.230 10994 12987 D SMACK   : RECV (0): <iq type="error" id="JQYId-1396" from="controlroom@conference.myapp.com" to="eaf60f002867230766bb74b4419dffca@myapp.com/d73d639de6435579"><query xmlns="http://jabber.org/protocol/muc#owner"/><error code="403" type="auth"><forbidden xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>

09-14 02:09:07.250 10994 11433 D SMACK   : XMPPConnection reconnected (0)

09-14 02:09:08.960 10994 10994 W ResourcesManager: getTopLevelResources: /data/app/com.myapp.xmpptest-1/base.apk / 1.0 running in com.myapp.xmpptest rsrc of package null
09-14 02:09:09.180 10994 10994 D myapp   : getApplicationPackage : com.myapp.xmpptest
09-14 02:09:09.210 10994 10994 I XmppService: UserName from preferences : harit.mehta1@hotmail.com

09-14 02:09:09.220 10994 13097 I XmppService: Before xmppConnection connect.....
09-14 02:09:09.220 10994 13097 I XmppService: Before xmppConnection login.....

09-14 02:09:10.560 10994 10994 I Choreographer: Skipped 74 frames!  The application may be doing too much work on its main thread.
09-14 02:09:11.070 10994 10994 I Timeline: Timeline: Activity_idle id: android.os.BinderProxy@a12e696 time:5117900
09-14 02:09:28.900 10994 10994 V ActivityThread: updateVisibility : ActivityRecord{fe7fff6 token=android.os.BinderProxy@a12e696 {com.myapp.xmpptest/com.myapp.xmpptest.DashFragmentActivity}} show : false

09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection: Connection closed with error
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection: javax.net.ssl.SSLException: Read error: ssl=0x9bf6cd80: I/O error during system call, Connection timed out
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:811)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at java.io.InputStreamReader.read(InputStreamReader.java:233)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at java.io.BufferedReader.read(BufferedReader.java:325)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:41)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1173)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:952)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:967)
09-14 02:09:46.200 10994 12987 W AbstractXMPPConnection:    at java.lang.Thread.run(Thread.java:818)

09-14 02:09:46.200 10994 12987 D myapp   : XmppConnectionListener connectionClosedOnError()

09-14 02:09:46.200 10994 12987 W System.err: javax.net.ssl.SSLException: Read error: ssl=0x9bf6cd80: I/O error during system call, Connection timed out
09-14 02:09:46.200 10994 12987 W System.err:    at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
09-14 02:09:46.200 10994 12987 W System.err:    at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:811)
09-14 02:09:46.200 10994 12987 W System.err:    at java.io.InputStreamReader.read(InputStreamReader.java:233)
09-14 02:09:46.200 10994 12987 W System.err:    at java.io.BufferedReader.read(BufferedReader.java:325)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:41)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1173)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:952)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:967)
09-14 02:09:46.200 10994 12987 W System.err:    at java.lang.Thread.run(Thread.java:818)

09-14 02:09:46.200 10994 12987 D SMACK   : XMPPConnection closed due to an exception (0)

09-14 02:09:46.200 10994 12987 W System.err: javax.net.ssl.SSLException: Read error: ssl=0x9bf6cd80: I/O error during system call, Connection timed out
09-14 02:09:46.200 10994 12987 W System.err:    at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)
09-14 02:09:46.200 10994 12987 W System.err:    at com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:811)
09-14 02:09:46.200 10994 12987 W System.err:    at java.io.InputStreamReader.read(InputStreamReader.java:233)
09-14 02:09:46.200 10994 12987 W System.err:    at java.io.BufferedReader.read(BufferedReader.java:325)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:41)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
09-14 02:09:46.200 10994 12987 W System.err:    at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1173)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(XMPPTCPConnection.java:952)
09-14 02:09:46.200 10994 12987 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:967)
09-14 02:09:46.200 10994 12987 W System.err:    at java.lang.Thread.run(Thread.java:818)

09-14 02:09:47.320 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 19
09-14 02:09:48.360 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 18
09-14 02:09:49.400 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 17

09-14 02:09:50.170 10994 10994 W ResourcesManager: getTopLevelResources: /data/app/com.myapp.xmpptest-1/base.apk / 1.0 running in com.myapp.xmpptest rsrc of package null
09-14 02:09:50.400 10994 10994 D myapp   : getApplicationPackage : com.myapp.xmpptest
09-14 02:09:50.430 10994 10994 I XmppService: UserName from preferences : harit.mehta1@hotmail.com

09-14 02:09:50.440 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 16
09-14 02:09:50.440 10994 14662 I XmppService: Before xmppConnection connect.....
09-14 02:09:51.440 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 15
09-14 02:09:52.440 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 14
09-14 02:09:52.460 10994 10994 I Choreographer: Skipped 115 frames!  The application may be doing too much work on its main thread.
09-14 02:09:53.440 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 13

09-14 02:09:53.500 10994 10994 I Timeline: Timeline: Activity_idle id: android.os.BinderProxy@a12e696 time:5160339

09-14 02:09:53.680 10994 14774 D SMACK   : SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='eaf60f002867230766bb74b4419dffca@myapp.com' xml:lang='en'>
09-14 02:09:53.740 10994 14775 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="b894b7e" xml:lang="en" version="1.0">
09-14 02:09:53.800 10994 14775 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></mechanisms></stream:features>

09-14 02:09:53.800 10994 14774 D SMACK   : SENT (0): <starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'></starttls>
09-14 02:09:53.870 10994 14775 D SMACK   : RECV (0): <proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>

09-14 02:09:54.250 10994 14774 D SMACK   : SENT (0): <stream:stream xmlns='jabber:client' to='myapp.com' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' from='eaf60f002867230766bb74b4419dffca@myapp.com' xml:lang='en'>
09-14 02:09:54.300 10994 14775 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="b894b7e" xml:lang="en" version="1.0"><stream:features><mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><mechanism>PLAIN</mechanism></mechanisms><compression xmlns="http://jabber.org/features/compress"><method>zlib</method></compression><auth xmlns="http://jabber.org/features/iq-auth"/></stream:features>

09-14 02:09:54.310 10994 14662 D myapp   : XmppConnectionListener connectionConnected()

09-14 02:09:54.310 10994 14662 D SMACK   : XMPPConnection connected (0)
09-14 02:09:54.330 10994 14774 D SMACK   : SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>lkdhfgkhfdltsyireghjHASHKhfhioqethrh275984758hgjksdhg894q39kHKHIG89Y5HDFJKGNJKSY4E893HKJFHDUYST4HJHWA7389J5KLHFH97jkj97uotigdkhgfd8976i3qkH9786OI45H6TJKHIA7OTI3I4WHTLIURFUIY9==</auth>

09-14 02:09:54.440 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 12
09-14 02:09:54.440 10994 14484 D SMACK   : XMPPConnection (0) will reconnect in 0

09-14 02:09:59.380 10994 14774 D SMACK   : SENT (0): <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>lkdhfgkhfdltsyireghjHASHKhfhioqethrh275984758hgjksdhg894q39kHKHIG89Y5HDFJKGNJKSY4E893HKJFHDUYST4HJHWA7389J5KLHFH97jkj97uotigdkhgfd8976i3qkH9786OI45H6TJKHIA7OTI3I4WHTLIURFUIY9==</auth>

09-14 02:09:59.380 10994 14662 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'.
09-14 02:09:59.390 10994 14662 W System.err:    at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:250)
09-14 02:09:59.390 10994 14662 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginNonAnonymously(XMPPTCPConnection.java:374)
09-14 02:09:59.390 10994 14662 W System.err:    at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:456)
09-14 02:09:59.390 10994 14662 W System.err:    at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:414)
09-14 02:09:59.390 10994 14662 W System.err:    at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:863)
09-14 02:09:59.390 10994 14662 W System.err:    at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:364)
09-14 02:09:59.390 10994 14662 W System.err:    at com.myapp.xmpp.XmppService.connectAndAuthenticate(XmppService.java:591)
09-14 02:09:59.390 10994 14662 W System.err:    at com.myapp.xmpp.XmppService$2.run(XmppService.java:217)
09-14 02:09:59.390 10994 14662 W System.err:    at java.lang.Thread.run(Thread.java:818)
09-14 02:09:59.410 10994 14662 D Utilities: Xmpp Log Files directory created : true
09-14 02:09:59.800 10994 14662 D Utilities: ~~~~~~~~~~~~~~~~~~~Log file saved. returning~~~~~~~~~~~~~~
09-14 02:09:59.800 10994 14662 I XmppService: Before xmppConnection login.....

似乎客户端从未收到对'auth'节的响应。在查看smack库中的代码之后,我认为'XMPPTCPConnection.java'中'connectInternal()'方法中的代码可能会导致此错误。我认为当connect方法仍处于握手过程中时,会调用登录,这可能会使服务器上的内容搞乱。在我们呼叫登录之前是否应该有一些延迟,直到握手过程完成?如果是这样,我该如何解决这个问题呢?如果不是那么可能导致超时错误的原因是什么?

感谢。

答案 1 :(得分:0)

当您为移动客户端提供服务时,服务器端异常在生产日志中非常常见。这清楚地表明,在移动设备上,我们的网络一直在切换,它与桌面LAN / WiFi连接不同,后者不经常连接/断开连接。

所以你的具体案例似乎是一个,你可以通过我相信你已经在做的重新连接政策来控制这个。