在android中聊天时Quickblox聊天连接断开

在android中聊天时Quickblox聊天连接断开,android,xmpp,quickblox,quickblox-android,Android,Xmpp,Quickblox,Quickblox Android,我正在为android开发一款应用程序,其中包括Quickblox。我不断收到消息“聊天连接已断开”。在阅读logcat后,我得到的是: 12-08 11:15:31.214 13894-14722/com.quickblox.sample W/AbstractXMPPConnection:连接因错误而关闭 java.net.SocketTimeoutException:读取超时 在com.android.org.conscrypt.NativeCrypto.SSL_读取(本机方法) 位于com

我正在为android开发一款应用程序,其中包括Quickblox。我不断收到消息“聊天连接已断开”。在阅读logcat后,我得到的是:

12-08 11:15:31.214 13894-14722/com.quickblox.sample W/AbstractXMPPConnection:连接因错误而关闭 java.net.SocketTimeoutException:读取超时 在com.android.org.conscrypt.NativeCrypto.SSL_读取(本机方法) 位于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.observeReader.read(源文件: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(源文件:1240) 位于org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(源文件:1014) 位于org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(源文件:1029) 运行(Thread.java:818) 12-08 11:15:31.216 13894-14722/com.quickblox.sample D/SMACK:XMPPConnection因异常而关闭(0) 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:com.android.org.conscrypt.NativeCrypto.SSL_read(本机方法) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err: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.observeReader.read(源文件: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.peek类型(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.xmpptcpcconnection$PacketReader.parsePackets(源文件:1240) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err:at org.jivesoftware.smack.tcp.xmpptcpcconnection$PacketReader.access$300(源文件:1014) 12-08 11:15:31.217 13894-14722/com.quickblox.sample W/System.err:at org.jivesoftware.smack.tcp.xmpptcpcconnection$PacketReader$1.run(源文件: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)


我找不到同样的解决方案。

套接字是用于通过网络进行通信的设备(例如连接到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);