After having a look at PingManager, there are some interesting details I’d like to know more about:
It will attempt to ping the server three times in a row, with 1s between. Why is that needed, as opposed to just sending one ping? It’s not like the additional traffic will somehow add more pressure to the connection
By default, PingManager will ping the server every 30 minutes (with three pings), but it won’t perform any action if those pings time out / throw exceptions. I understand how this is useful to keep the connection running, but it is inconsisten w.r.t. the configuration: either you shouldn’t ping by default and let the client enable pinging and provide a handler, or you should have a default action that resets the connection when no handlers are registered by the client.