我正在开发一个涉及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)
我无法找到相同的解决方案。
答案 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);