Bij het eerste werken met de HTTPAPI-server is het zeer gebruikelijk om te zien dat het OnDisconnect-evenement niet onmiddellijk wordt geactiveerd wanneer een client de verbinding sluit. De reden is dat de HTTPAPI-server enigszins anders werkt dan andere servers zoals Indy. In de Indy-server is er een thread voor elke verbinding die elke x milliseconden controleert of de verbinding actief is. De HTTPAPI-server gebruikt een threadpool die alle verbindingen verwerkt en niet controleert voor elke verbinding of deze actief is of niet.
Om een melding te ontvangen wanneer de client de verbinding verbreekt, voert u de volgende configuratie uit:
1. Als u een TsgcWebSocketClient gebruikt, stel dan Options.CleanDisconnect := True in. Dit betekent dat voordat de verbinding wordt gesloten, de client probeert een melding naar de server te sturen dat de verbinding wordt gesloten. Als de server dit bericht ontvangt, wordt de OnDisconnect-gebeurtenis aangeroepen.
2. Voor andere verbroken verbindingen is de enige oplossing om iets naar de socket te schrijven; als dit mislukt, wordt de verbinding verbroken. Schakel HeartBeat in op de HTTPAPI-server, stel een interval in van bijvoorbeeld 60 seconden en een time-out van 0. Deze configuratie betekent dat elke 60 seconden alle verbindingen worden gepingd en als er verbindingen zijn verbroken, wordt de OnDisconnect-gebeurtenis geactiveerd. U kunt een lagere waarde instellen voor HeartBeat.Interval, maar stel deze niet te laag in (1 seconde is bijvoorbeeld te laag) omdat dit de prestaties van de server zal beïnvloeden.