title: Should I resend or reconnect if the acknowledgement for a sent message is missing?
body: <p>In a distributed system, to ensure the peer has received a message correctly, we may use application level acknowledgement mechanism (ACK).</p>
  <p>But when the client and the server is connecting via TCP or WebSocket, if the application level ACK for a sent message is not received by the sender, does it mean the connection is broken and should be reconnected?</p>
  <p>Is it possible for the data or application level ACK is missing from application level but actually successfully transmitted in TCP level? (In this case, resending the message may be economical.)</p>