> But again, because we had a rapid expectation for an acknowledgement, we could detect and reap these pretty quickly.
I found the best way to handle this was with an application level heartbeat. That bypassed dealing with any weirdness of the client firewalls, TCP spoofing, etc.
Something like ping every 30 seconds and say goodbye to the socket if we don't receive 2 seems work reasonably well.
And it also prevent most idle killing base tcp disconnect from happening.
And even if some network is so dumb that decides to kill it under 30s, it is a non issue as that network won't be even usable in normal means. (How do you download any big file if it always disconnect instantly?)
I found the best way to handle this was with an application level heartbeat. That bypassed dealing with any weirdness of the client firewalls, TCP spoofing, etc.