【问题标题】:Quickblox Chat connection drop when chatting in android在 android 中聊天时 Quickblox 聊天连接断开
【发布时间】:2016-12-08 06:08:04
【问题描述】:

我正在开发一个涉及 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: 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: 在 java.io.InputStreamReader.read(InputStreamReader.java:233) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err: 在 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:在 org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1515) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err: 在 org.kxml2.io.KXmlParser.peekType(KXmlParser.java:992) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err:在 org.kxml2.io.KXmlParser.next(KXmlParser.java:349) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err:在 org.kxml2.io.KXmlParser.next(KXmlParser.java:313) 12-08 11:15:31.216 13894-14722/com.quickblox.sample W/System.err: 在 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: 在 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)

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

【问题讨论】:

    标签: android xmpp quickblox quickblox-android


    【解决方案1】:

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

    这里的代码 sn-p 可以通过增加 Socket Timeout 来解决这个问题,因为 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多