Im implementing my own proto in Java, it will use a heartbeat over a TCP connection that I also use to transfer messages and files. For the client I am using blocking socket I/O. So here is how Im planning that will work... I will set the socket timeout for K seconds and make the heartbeat stay sending messages in an interval T, so that T < K. If the timeout expires, looks like the server is offline for the client, or vice-versa.
The heartbeat is the server sending a String and the Client answering another.
I dont want to waste a lot of bandwidth but with a big timeout the server could be mistaken about the client´s status.
What is a good K interval? I am thinking about 40 seconds
PS: the strings are 8 letters sent in ISO-8859-1 so its small data