在android

时间:2016-12-08 06:08:04

标签: android xmpp quickblox quickblox-android

我正在开发一个涉及Quickblox的Android应用程序。我一直收到消息'聊天连接已被删除'。在阅读logcat后,这就是我得到的:

  

12-08 11:15:31.214 13894-14722 / com.quickblox.sample W / AbstractXMPPConnection:连接因错误而关闭                                                                                 java.net.SocketTimeoutException:读取超时                                                                                     在com.android.org.conscrypt.NativeCrypto.SSL_read(本机方法)                                                                                     在com.android.org.conscrypt.OpenSSLSocketImpl $ SSLInputStream.read(OpenSSLSocketImpl.java:705)                                                                                     在java.io.InputStreamReader.read(InputStreamReader.java:233)                                                                                     在java.io.BufferedReader.read(BufferedReader.java:325)                                                                                     在org.jivesoftware.smack.util.ObservableReader.read(SourceFile:41)                                                                                     在org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)                                                                                     在org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)                                                                                     在org.kxml2.io.KXmlParser.next(KXmlParser.java:349)                                                                                     在org.kxml2.io.KXmlParser.next(KXmlParser.java:313)                                                                                     在org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.parsePackets(SourceFile:1240)                                                                                     在org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.access $ 300(SourceFile:1014)                                                                                     在org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader $ 1.run(SourceFile:1029)                                                                                     在java.lang.Thread.run(Thread.java:818)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample D / SMACK:由于异常(0)XMPPConnection关闭   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:java.net.SocketTimeoutException:读取超时   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at com.android.org.conscrypt.NativeCrypto.SSL_read(Native Method)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at com.android.org.conscrypt.OpenSSLSocketImpl $ SSLInputStream.read(OpenSSLSocketImpl.java:705)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at java.io.InputStreamReader.read(InputStreamReader.java:233)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at java.io.BufferedReader.read(BufferedReader.java:325)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.jivesoftware.smack.util.ObservableReader.read(SourceFile:41)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.kxml2.io.KXmlParser.next(KXmlParser.java:349)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.kxml2.io.KXmlParser.next(KXmlParser.java:313)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.parsePackets(SourceFile:1240)   12-08 11:15:31.216 13894-14722 / com.quickblox.sample W / System.err:at org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.access $ 300(SourceFile:1014)   12-08 11:15:31.217 13894-14722 / com.quickblox.sample W / System.err:at org.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader $ 1.run(SourceFile:1029)   12-08 11:15:31.217 13894-13894 / com.quickblox.sample I / VerboseQbChatConnectionListener:connectionClosedOnError():读取超时   12-08 11:15:31.217 13894-14722 / com.quickblox.sample W / System.err:at java.lang.Thread.run(Thread.java:818)

我无法找到相同的解决方案。

1 个答案:

答案 0 :(得分:2)

套接字是您用于通过网络进行通信的方式(例如,用于连接到Internet上的服务器)。错误消息表示程序试图通过网络从远程计算机接收数据,但在一段时间内没有收到任何数据,因此程序停止等待接收数据。

以下是可以通过增加套接字超时来解决此问题的代码段,因为Quickblox中的默认SocketTimeOut是30秒。

QBChatService.ConfigurationBuilder chatServiceConfigurationBuilder = new QBChatService.ConfigurationBuilder();
chatServiceConfigurationBuilder.setSocketTimeout(180); //Sets chat socket's read timeout in seconds
chatServiceConfigurationBuilder.setKeepAlive(true); //Sets connection socket's keepAlive option.
QBChatService.setConfigurationBuilder(chatServiceConfigurationBuilder);