use IO.select and pings to detect connections that have gone away