Versuch doch einfach mit einem simplen timer einfach alle x sekunden die in einer
query zB den current_timestamp
vom server zu holen mit "select current_timestamp from rdb$database".
Dafür dann aber sicherstellen das der Timer ggf bei jeder realen Aktion deiner Applikation auf der Datenbank
mit enabled false/true wieder resettet wird, damit der dir möglichst selten da rein pfuscht. Alternativ kannst
du dafür auch eine extra connection benutzen, sinnvollerweise dann auch nur readonly.
Ob IBDAC ein funktionierendes Keepalive kann, kann ich dir nicht sagen, ich versuch so was meistens unabhängig
von irgendeiner speziellen Komponentenfähigkeit zu lösen, weil nicht alles was Komponenten machen, immer sinnvoll
ist. Und weil offene Datasets sowieso schon fast immer auch Transaktionen dauerhaft offen halten, ist das Problem
da nicht ganz banal lösbar.