Openfire, by default, will query a session that has been idle, to check if it is still responsive. It does so at half the maximum allowed time that a session can be idle, before being considered dead/timed-out.
For client connections, the default (yet configurable) maximum idle time is currently six minutes. This means that the health check will occur at three minutes.
It can be desirable to have an initial indication that a client might be unresponsive earlier than that (for example, to warn its contacts: see ). That can be achieved by performing more pings.
Instead of using another hard-coded value (eg: send a ping after 30 seconds, instead of half the max idle time), this value ideally is configurable.
there likely is no need to send more than one ping during inactivity (as the first ping either will eventually be responded to, or all pings will not)
the maximum allowed idle time must continue to be observed. The act of removing a connection now occurs on the second 'idle' event: there currently is a relation between the interval of the pings and maximum idle duration.