TsgcWebSocketClient › Metodi › Ping
Invia un frame ping WebSocket al server e restituisce immediatamente senza attendere la risposta pong.
procedure Ping(const aText: String = '');
| Nome | Tipo | Descrizione |
|---|---|---|
aText | const String | Payload facoltativo da inserire nel frame ping; passare una stringa vuota per inviare un ping senza payload. |
Questo overload invia il ping e ritorna immediatamente, senza bloccare il chiamante né attendere il pong corrispondente. Quando il client non ha alcuna connessione, non viene inviato nulla e l'errore viene segnalato tramite OnError con Connection = nil e l'errore Data not sent, the client is not connected or its handshake has not completed. L'evento viene generato sul thread chiamante prima che Ping restituisca il controllo, e nessuna eccezione viene sollevata verso il chiamante. Impostare Options.RaiseDisconnectExceptions su False per ignorare questa segnalazione. Un ping inviato prima che l'handshake WebSocket sia terminato non viene segnalato come errore, perché anche l'HeartBeat esegue ping tramite questo stesso metodo. Qualsiasi pong ricevuto dal server viene consegnato in modo asincrono tramite gli eventi di connessione standard. Le eccezioni interne vengono intercettate e indirizzate a OnError. Utilizzare l'overload con timeout di l'altro overload quando è necessaria la conferma che il peer sia ancora raggiungibile.
oClient.Ping('keepalive');
function Ping(aTimeout: Integer; const aText: String = '') : Boolean;
| Nome | Tipo | Descrizione |
|---|---|---|
aTimeout | Integer | Tempo massimo in millisecondi da attendere per la risposta pong prima di rinunciare. |
aText | const String | Payload facoltativo da inserire nel frame ping; passare una stringa vuota per inviare un ping senza payload. |
True se il server ha risposto con un pong corrispondente entro il periodo di timeout; False in caso contrario. Quando viene restituito False, il client può scegliere di chiudere la connessione perché il peer è considerato irraggiungibile. (Boolean)
Questo overload blocca il thread chiamante finché non arriva il pong o non scade il timeout, quindi è utile per i controlli interattivi di liveness. Il metodo restituisce immediatamente False quando il client non ha alcuna connessione, e segnala l'errore tramite OnError con Connection = nil, come descritto per l'altro overload. Le eccezioni generate dal socket sottostante vengono catturate e inoltrate a OnError. Per un ping fire-and-forget che non blocca, utilizzi invece l'altro overload senza parametri.
if not oClient.Ping(5000, 'healthcheck') then
oClient.Disconnect;