Tengo dos componentes que se comunican a través de TCP/IP. El Componente A actúa como servidor/oyente y el Componente B es el cliente. Los dos deben comunicarse lo más rápido posible. Solo puede haber una conexión en cualquier momento (aunque eso queda aparte de esta pregunta). Un desarrollador sénior de mi empresa ha dicho que necesito utilizar los latidos del corazón de la aplicación entre los dos componentes para garantizar que la conexión permanezca abierta.¿Necesito latir para mantener abierta una conexión TCP?
Pensé que la conexión se mantiene abierta con TCP/IP, pero he leído una serie de blogs/sitios que dicen que es una práctica bastante común para el latido del corazón entre estas aplicaciones.
Conozco parte del componente de razón Un componente de heartbeats B es para que pueda informar al soporte si hay problemas de comunicación con el componente B (o el enlace está inactivo o el componente B no está ejecutándose). ¿Se necesitan latidos cardíacos por cualquier otra razón? ¿Tal como para asegurar que frecuentemente haya algo "en la tubería" para mantenerlo abierto?
Componente A actualiza el componente B cada 20 segundos y cierra la conexión si no se recibe nada del componente B en 120 segundos. A continuación, reanuda la escucha de conexiones bajo la suposición de que el componente B intentará periódicamente una reconexión si el enlace está roto. Esto funciona con éxito.
Para reiterar mi pregunta: ¿Son necesarios los latidos del corazón para mantener viva una conexión TCP/IP?
¿Este comportamiento también podría ser dependiente de la implementación? ¿Es esto algo especificado en el estándar TCP, o se deja como un detalle de implementación? Ojalá alguien más pueda responder eso también. – dss539
Es un detalle de implementación, diría yo, ya que no todos los protocolos basados en TCP/IP implementan, ya que es de su exclusiva responsabilidad. – Lloyd
Sí, no debido a TCP/IP, sino debido a otro hardware o software que su conexión puede atravesar, como cortafuegos y 'enrutadores' que tienden a desconectar las conexiones TCP inactivas, relacionadas con: http://stackoverflow.com/questions/ 3907537/keep-alive-tcp-ip-connected-sockets-over-the-internet-when-how-how-much/5149662 # 5149662 – markmnl