Falls der Event bei einem
TCP-Verbindungsabbruch gefeuert wird, bringt er wirklich nichts. Das Problem ist meistens, das die Verbindung nicht abgebrochen wurde, aber trotzdem nichts durch komme. Daher heartbeat, Keep alive etc.
A sendet alle X Sekunden ein 'Hallo' and B. B antwortet sofort mit 'Huhu'.
A wartet nach dem eigenen 'Hallo' maximal X Sekunden bis zum Huhu. Kommt es nicht, wird die Verbindung geschlossen.
Wenn B nicht alle X*f (f>1, z.B. 1.2) Sekunden ein "Hallo" bekommt, wird die Verbindung geschlossen.
Der Client (einer von beiden ist ja logischerweise der Client) baut die Verbindung dann wieder auf.
B muss nur 'X' kennen, also quasi den Timeout.
Bei einer
SQL-Connection nehmen wir auch ein 'SELECT 1' oder den timestamp, wie Holger erwähnt hat und kicken die Verbindung bei einem Timeout. D.h. wir haben eine ständig aktive Connection.