Server load of client DDP pings?

We have a Unity-based mobile app that has to deal with server disconnects in a user-friendly way. The app uses a DDP framework based on C# to connect to the Meteor server. This framework has some issues if the connection drops, e.g. it won’t cache methods and send them again over a different WebSockets connection if the connection has been re-established.

Hence, we have to implement a way to detect connection losses quickly and prevent further user activities until the connection is stable again. Currently, we’re relying on callbacks of the underlying WebSocket framework to detect connection problems, but these fire quite late (after 10 secs). This might lead to problems because the user has performed actions that would be lost.

So we implemented our own ping/pong keep-alive checks, which DDP fortunately supports out-of-the-box. However, we are wondering how frequently we can send these pings without putting too much stress on the server, if many users are connected. Is there any best-practices on that, or is the processing time required for pongs neglectable?

We’ve seen that the server itself sends a ping every 20 secs or so. I am wondering why this setting is that high.