<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><span style="font-family:Arial,Helvetica,sans-serif">On Tue, Mar 2, 2021 at 5:14 AM jdmeta <<a href="mailto:jdmeta@gmail.com">jdmeta@gmail.com</a>> wrote:</span><br></div></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <br>
    <font face="Cambria">thanx for the reply leonard.<br>
      <br>
      agree about the http vs. websocket distinction.<br>
      i started out http because i was hoping i could get to mvp sooner
      but, as you point out, websockets has some advantages.<br>
      since i want to end up there anyway i may bite the bullet and
      gostraight there in mvp.<br>
      <br></font></div></blockquote><div><br></div><div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Websockets have a Ping/Pong setup. You can send a ping frame and expect a pong frame back. TCP sockets have keepalive as an option you can set on the socket.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">The reason for both is that an established TCP connection normally has no bytes flowing on it at all. So unless one end tries to transmit, the other end doesn't know the connection is down. I can create a TCP connection, get the handshake and then not send a byte for 7 days on that connection. It's still connected and up! TCP keepalive helps with this by sending a packet every 2 hours or so. And the ping/pong framing in websockets does it even more frequently.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">In general, you can use this to eventually clean up, but note that there are some lingering that will be present in some corner cases as you don't know if the other end is slow to respond or gone.</div><br></div></div></div>