|
|
|
|
|
by guelo
5786 days ago
|
|
Couldn't find any Android info on your site. I can think of a ton of questions, here are some off the top of my head. * Are you just doing polling or did you figure out some TCP keep-alive tricks to keep the connection open? * If doing keep-alive do you try to adapt your pings to compensate for different timeouts on different carrier networks and deal with half-open connections as Google claims they do with c2dm? * Have you measured your battery usage? What is it like? * How many connections can your servers handle? * What is the Android library like. Is it a separate app that you communicate with via AIDL? * Does your app handle the notification or does it just broadcast an Intent? * Are the packets encrypted? |
|
The main reason using TCP keep-alives were a non-starter was because in our testing, carriers handled them in "special" ways which usually meant they rarely or never actually reach ed the intended endpoint.
Another strike against TCP keep-alives is how the RFC defining them seems pretty ambivalent on their use. Support is optional, delivery is not guaranteed (ACK segments with no data aren't reliably transmitted), and implementations may vary.
See: http://tools.ietf.org/html/rfc1122#page-101
At the end of the day they're a fine freebie for protocols like SSH to use (although they're spoofable...), but we wanted finer-grained control in order to optimize resource usage on the device, our servers, and the pipes between.
I'd love to hear about others' experiences with TCP keep-alives though.