首页 文章

在android中聊天时Quickblox聊天连接丢失

提问于
浏览
1

我正在开发一个涉及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(本机方法) )java.io.BufferedReader.read上的java.io.InputStreamReader.read(InputStreamReader.java:233)中的com.android.org.conscrypt.OpenSSLSocketImpl $ SSLInputStream.read(OpenSSLSocketImpl.java:705)(BufferedReader.java: 325)atg.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)atg.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader.access $ 300(SourceFile:1014)atg.jivesoftware.smack.tcp.XMPPTCPConnection $ PacketReader $ 1.run(SourceFile:1029)at java.l ang.Thread.run(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:read timed out 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 o rg.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():读取ti med out 12-08 11:15:31.217 13894-14722 / com.quickblox.sample W / System.err:at java.lang.Thread.run(Thread.java:818)

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

1 回答

  • 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);
    

相关问题