Una volta configurato il client per la connessione a un server, ci sono 3 diverse opzioni per aprire una nuova connessione.
Il modo più semplice per aprire una nuova connessione è impostare la proprietà Active su true. Questo tenterà di connettersi al server utilizzando la configurazione del componente.
Se imposta la proprietà Active su false, la connessione verrà chiusa se attiva.
Questo metodo viene eseguito nello stesso thread del chiamante. Pertanto, se viene chiamato dal Thread Principale, il metodo verrà eseguito nel Thread Principale dell'applicazione.
Apri connessione
oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Active := true;
Quando si imposta Active = true, non è ancora possibile inviare dati al server perché il client potrebbe essere ancora in fase di connessione. È necessario attendere prima che venga generato l'evento OnConnect, dopodiché è possibile iniziare a inviare messaggi al server.
Chiudi connessione
oClient.Active := false;
Quando si imposta Active = false, non si può essere certi che la connessione sia già chiusa subito dopo questo codice; è quindi necessario attendere fino a quando non viene generato l'evento OnDisconnect.
Quando si chiama Start() o Stop() per connettere/disconnettere dal server, la chiamata viene eseguita in un thread secondario, quindi non blocca il thread da cui è stata chiamata. Utilizzare questo metodo se si desidera connettersi a un server e lasciare che il codice successivo continui l'esecuzione.
Apri connessione
oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Start();
Quando si chiama Start(), non è ancora possibile inviare dati al server perché il client potrebbe essere ancora in fase di connessione. È necessario attendere prima che l'evento OnConnect venga attivato, e poi si può iniziare a inviare messaggi al server.
Chiudi connessione
oClient.Stop();
Quando chiama Stop(), non può essere sicuro che la connessione sia già chiusa subito dopo questo codice, quindi deve attendere finché non viene generato l'evento OnDisconnect.
Quando si chiama Connect() o Disconnect() per aprire/chiudere una connessione al server, la chiamata viene eseguita nello stesso thread in cui viene invocata, ma attende fino al termine del processo. È necessario impostare un Timeout per definire il tempo massimo da attendere fino al termine del processo (per impostazione predefinita 10 secondi).
Esempio: connessione al server e attesa fino a 5 secondi
oClient := TsgcWebSocketClient.Create(nil);
...
if oClient.Connect(5000) then
oClient.WriteData('Hello from client')
else
Error();
Se il metodo Connect() restituisce un risultato positivo, è già possibile inviare un messaggio al server perché la connessione è attiva.
Esempio: disconnettersi dal server e attendere fino a 10 secondi
if oClient.Disconnect(10000) then
ShowMessage('Disconnected')
else
ShowMessage('Not Disconnected');
Se il metodo Disconnect() restituisce un risultato positivo, significa che la connessione è già chiusa.
L'evento OnBeforeConnect può essere utilizzato per personalizzare le proprietà di connessione al server prima che il client tenti di connettersi ad esso.