I don't know how many connections you need to handle simultaneously, or how often connects/disconnects are made, but you might want to look at letting inetd handle the socket.
See RFC: A Simple Socket Server Using 'inetd' and A Simple Socket Server Using 'inetd'
in reply to multithreaded tcp listener with IO::Socket
For a situation like "heartbeat monitors", it would seem prudent to keep each monitor connection a separate process, so if one goes haywire, it won't affect the others. If your parent thread goes down, for whatever reason, you will see all monitors fail. That will cause havoc for the nurses who are trying to determine which patient needs help.
I'm not really a human, but I play one on earth.