Podczas pierwszej pracy z serwerem HTTPAPI bardzo często można zaobserwować, że zdarzenie OnDisconnect nie jest wywoływane natychmiast po zamknięciu połączenia przez klienta. Wynika to z faktu, że serwer HTTPAPI działa nieco inaczej niż inne serwery, takie jak Indy. W serwerze Indy dla każdego połączenia przydzielony jest osobny wątek, który co określoną liczbę milisekund sprawdza, czy połączenie jest aktywne. Serwer HTTPAPI używa puli wątków obsługującej wszystkie połączenia i nie sprawdza aktywności każdego połączenia osobno.
Aby otrzymywać powiadomienia o zamknięciu połączenia przez klienta, należy wykonać następującą konfigurację:
1. Jeśli używany jest komponent TsgcWebSocketClient, należy ustawić opcję Options.CleanDisconnect := True. Oznacza to, że przed zamknięciem połączenia klient spróbuje wysłać do serwera powiadomienie o zamknięciu połączenia. Jeśli serwer odbierze tę wiadomość, zostanie wywołane zdarzenie OnDisconnect.
2. W przypadku pozostałych rozłączeń jedynym rozwiązaniem jest zapisanie danych do gniazda; w przypadku niepowodzenia połączenie zostanie rozłączone. Należy włączyć funkcję HeartBeat na serwerze HTTPAPI, ustawić interwał na przykład 60 sekund i limit czasu na 0. Ta konfiguracja oznacza, że co 60 sekund wszystkie połączenia będą pingowane. Jeśli którekolwiek z nich zostanie rozłączone, zostanie wywołane zdarzenie OnDisconnect. Można ustawić mniejszą wartość parametru HeartBeat.Interval, jednak nie należy ustawiać jej zbyt małej (na przykład 1 sekunda to za mało), ponieważ wpłynie to negatywnie na wydajność serwera.