@Service: wir haben das mal flexibel gelöst.
Jeder erfolgreiche Aufbau einer Verbindung erhöht einen Zähler, jeder Abbau verringert ihn. Wenn der Zähler 0 ist, darf man bei Bedarf den Service anschmeißen.
Das haben wir in einer Anwendung zwar ähnlich, aber doch etwas anders gelöst. Denn wenn ein Client abstürzt, dann kann er seinen Zähler nicht mehr rausnehmen.
Wir haben extra ein Tabelle mit den Felder Clientname, Datum/Zeit. Startet ein Client, so trägt er sich mit Namen und Zeit ein. Alle 5 Minuten aktualisiert er seine Zeit in dem Datensatz. Wenn er sich anmeldet, löscht er seinen Datensatz.
Stürzt er ab, prüft er beim Eintragen ob noch ein alter Datensatz vorhanden ist und übernimmt diesen.
Schaut nun der Service drauf, kann man a) sofort die Toten Datensätze erkennen (Zeit ist älter als 5 Minuten) und b) gezielt die User ansprechen, die noch drin sind.