For routers/firewalls that terminate idle connections, a separate heartbeat mechanism may need to be implemented to keep the control connection active.
Some potential issues:
- Synchronization between a heartbeat write and a __getReply() on an active control connection command;
- Should use the NOOP command as a heartbeat signal;
- Make the timeout configurable;
- Default SocketImpl::setKeepAlive() wont do here.