I have a project on Android, which needs to use asmack library to enable real time chat.
The key feature is reconnecting mechanism, that means my application can reconnect automatically whenever the internet connection loses.
Here is my code snippet:
ConnectionConfiguration connConfig = new ConnectionConfiguration(HOST, PORT);
connConfig.setSASLAuthenticationEnabled(true);
connConfig.setReconnectionAllowed(true);
XMPPConnection connection = new XMPPConnection(connConfig);
But I got this error whenever I turned off then turned on Wifi:
10-01 21:43:26.942: W/System.err(13695): javax.net.ssl.SSLException: Write error: ssl=0x5a4ad348: I/O error during system call, Broken pipe
10-01 21:43:27.002: W/System.err(13695): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_write(Native Method)
10-01 21:43:27.012: W/System.err(13695): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:693)
10-01 21:43:27.012: W/System.err(13695): at java.io.OutputStreamWriter.flushBytes(OutputStreamWriter.java:167)
10-01 21:43:27.012: W/System.err(13695): at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:158)
10-01 21:43:27.012: W/System.err(13695): at java.io.BufferedWriter.flush(BufferedWriter.java:124)
10-01 21:43:27.012: W/System.err(13695): at org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:210)
10-01 21:43:27.012: W/System.err(13695): at org.jivesoftware.smack.PacketWriter.access$000(PacketWriter.java:42)
10-01 21:43:27.012: W/System.err(13695): at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:78)
10-01 21:43:27.092: W/System.err(13695): javax.net.ssl.SSLException: Read error: ssl=0x5a4ad348: I/O error during system call, Connection timed out
10-01 21:43:27.092: W/System.err(13695): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_read(Native Method)
10-01 21:43:27.092: W/System.err(13695): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream.read(OpenSSLSocketImpl.java:651)
10-01 21:43:27.092: W/System.err(13695): at java.io.InputStreamReader.read(InputStreamReader.java:244)
10-01 21:43:27.092: W/System.err(13695): at java.io.BufferedReader.read(BufferedReader.java:310)
10-01 21:43:27.092: W/System.err(13695): at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1496)
10-01 21:43:27.092: W/System.err(13695): at org.kxml2.io.KXmlParser.peekType(KXmlParser.java:979)
10-01 21:43:27.092: W/System.err(13695): at org.kxml2.io.KXmlParser.next(KXmlParser.java:346)
10-01 21:43:27.092: W/System.err(13695): at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
10-01 21:43:27.092: W/System.err(13695): at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:326)
10-01 21:43:27.092: W/System.err(13695): at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:44)
10-01 21:43:27.092: W/System.err(13695): at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:71)
Anyone, who can solve this error, please help me!
Use the latest smack api - I am using 4.1.0
Then set up re-connection like below:
ReconnectionManager manager = ReconnectionManager.getInstanceFor(connection);
manager.enableAutomaticReconnection();
It will automatically re-connect as described Here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With