The Java client is at the mercy of the underlying networking API to
a certain extent. When publish is called, it will write an MQTT
packet to the socket. If that write fails, then connection lost
will be called, if that write works then the client library will
carry on. The difference in behaviour you are seeing is because the
networking libraries are behaving differently in these
circumstances.
Keepalive is meant to help with this. Under certain circumstances a
TCP connection may appear to be live when it is not. This is
especially possible on mobile or satellite connected devices - you
can't expect the networking APIs to work exactly the same in all
circumstances. Keepalive sends a ping packet to the server and
expects a response - if that response is not received, the session
is assumed to be closed.
If you set the keepalive interval to say 10 seconds, then the
connection should be recognised as broken within 15 to 20 seconds.
Ian
On 08/10/2014 06:09 PM, Prashant Kedia
wrote:
Anyone
any luck on this?
Nagesh,
Keeping
KeepAliveInterval to 5 with debug logging did not provide
any clue.
I have
never used it but can anyone tell me if the issue the
issue is reproducible with Paho Android
Service interface? If it is not, then I would go through
its code to identify how it is implemented and how the issue
has been handled in it.
_______________________________________________
paho-dev mailing list
paho-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/paho-dev
--
Ian Craggs
icraggs@xxxxxxxxxx IBM United Kingdom
Committer on Paho, Mosquitto
|