Depois que seu cliente está configurado para se conectar a um servidor, há 3 opções diferentes para abrir uma nova conexão.
A maneira mais fácil de abrir uma nova conexão é definir a propriedade Active como true. Isso tentará conectar ao servidor usando a configuração do componente.
Se você definir a propriedade Active como false, ela fechará a conexão se estiver ativa.
Este método é executado na mesma thread que o chamador. Portanto, se você o chamar a partir da Main Thread, o método será executado na Main Thread da aplicação.
Open Connection
oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Active := true;
Quando você chama Active = true, você ainda não pode enviar nenhum dado ao servidor porque o cliente ainda pode estar conectando. Você deve primeiro aguardar até que o evento OnConnect seja disparado e, então, pode começar a enviar mensagens ao servidor.
Close Connection
oClient.Active := false;
Quando você chama Active = false, você não pode ter certeza de que a conexão já foi fechada logo após esse código, portanto você deve aguardar até que o evento OnDisconnect seja disparado.
Quando você chama Start() ou Stop() para conectar/desconectar do servidor, a chamada é executada em uma thread secundária, de modo que não bloqueia a thread onde ela é chamada. Utilize este método se você quiser conectar a um servidor e deixar o seu código abaixo continuar.
Open Connection
oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Start();
Quando você chama Start(), você ainda não pode enviar nenhum dado ao servidor porque o cliente pode ainda estar conectando. Você deve primeiro aguardar até que o evento OnConnect seja disparado, e então pode começar a enviar mensagens ao servidor.
Close Connection
oClient.Stop();
Quando você chama Stop(), você não pode ter certeza de que a conexão já está fechada logo após este código, portanto você deve aguardar até que o evento OnDisconnect seja disparado.
Quando você chama Connect() ou Disconnect() para abrir/fechar uma conexão com o servidor, a chamada é executada na mesma thread onde é chamada, mas aguarda até que o processo seja concluído. Você deve definir um Timeout para definir o tempo máximo a aguardar até que o processo seja concluído (por padrão 10 segundos).
Exemplo: conectar ao servidor e aguardar até 5 segundos
oClient := TsgcWebSocketClient.Create(nil);
...
if oClient.Connect(5000) then
oClient.WriteData('Hello from client')
else
Error();
Se o método Connect() retornar um resultado bem-sucedido, você já pode enviar uma mensagem ao servidor porque a conexão está ativa.
Exemplo: desconectar do servidor e aguardar até 10 segundos
if oClient.Disconnect(10000) then
ShowMessage('Disconnected')
else
ShowMessage('Not Disconnected');
Se o método Disconnect() retornar um resultado bem-sucedido, isso significa que a conexão já está fechada.
O evento OnBeforeConnect pode ser utilizado para personalizar as propriedades de conexão do servidor antes de o cliente tentar conectar a ele.