ConnectyCube / connectycube-android-sdk-releases

Releases packages for ConnectyCube Android SDK platform
https://connectycube.com
8 stars 2 forks source link

SocketTimeOut and unable to receive messages #2

Closed mufit-developer closed 4 years ago

mufit-developer commented 4 years ago

Problem

I keep receiving SocketTimeoutException errors from Smack, and MessageListener and MessageSentListeners are not called as a result. Messages can be sent, but I cannot verify whether they are sent or not since the MessageListeners do not work. I have initialized my Connectycube credentials, settings, logged in to obtain user authorization, and logged into chat service successfully.

On a side note, I tried the android-messenger-app sample, and noticed that Smack printed out many lines indicating connection was successful. In my case Smack did not print anything.

SDK used is v1.8.1

Settings

ConnectycubeChatService.setDefaultPacketReplyTimeout(30000);
        ConnectycubeChatService.setDefaultConnectionTimeout(30000);
        ConnectycubeChatService.getInstance().setUseStreamManagement(true);

        TcpConfigurationBuilder builder =  new TcpConfigurationBuilder()
                .setAllowListenNetwork(true)
                .setUseStreamManagement(true)
                .setUseTls(false)
                .setSocketTimeout(10);

        ConnectycubeChatService.setConnectionFabric(new TcpChatConnectionFabric(builder));

Log

W/AbstractXMPPConnection: Connection TcpXmppConnection[209384-1394@chat.connectycube.com/android_00000000-14be-5472-0017-17053ddf7e2d] (0) closed with error
    java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:151)
        at java.net.SocketInputStream.read(SocketInputStream.java:120)
        at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:287)
        at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:350)
        at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:179)
        at java.io.InputStreamReader.read(InputStreamReader.java:184)
        at java.io.BufferedReader.read1(BufferedReader.java:221)
        at java.io.BufferedReader.read(BufferedReader.java:297)
        at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1535)
        at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:1007)
        at org.kxml2.io.KXmlParser.next(KXmlParser.java:357)
        at org.kxml2.io.KXmlParser.next(KXmlParser.java:321)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(Unknown Source)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$300(Unknown Source)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:761)
D/ChatManager: Connection closed - Error: Read timed out
TatankaConCube commented 4 years ago

Use setSocketTimeout(0) like in android-messenger-app sample to set unlimited socket lifetime. Set any value to this parameter to recreate chat connection every time after this timeout.

mufit-developer commented 4 years ago

Thanks, it's working now!