配置客户端连接到服务器后,有 3 种不同的方式打开新连接。
打开新连接最简便的方法是将 Active 属性设为 true,这将使用组件配置尝试连接到服务器。
如果将 Active 属性设为 false,则会在连接处于活动状态时关闭连接。
此方法在与调用方相同的线程中执行。因此,如果您从主线程调用它,该方法将在应用程序的主线程中执行。
打开连接
oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Active := true;
当您调用 Active = true 时,仍无法向服务器发送任何数据,因为客户端可能仍在连接中。 您必须首先等待 OnConnect 事件触发,然后才能开始向服务器发送消息。
关闭连接
oClient.Active := false;
当您调用 Active = false 时,您无法确定连接在此代码执行后立即关闭,因此必须等待 OnDisconnect 事件触发。
当您调用 Start() 或 Stop() 连接/断开服务器时,调用在辅助线程中执行,因此不会阻塞调用它的线程。如果您希望连接到服务器后让下面的代码继续执行,请使用此方法。
打开连接
oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Start();
调用 Start() 后,仍然无法向服务器发送任何数据,因为客户端可能仍在连接中。您必须先等待 OnConnect 事件触发,然后才能开始向服务器发送消息。
关闭连接
oClient.Stop();
调用 Stop() 后,您无法确定连接是否已立即关闭,因此必须等待 OnDisconnect 事件触发。
当您调用 Connect() 或 Disconnect() 来打开/关闭与服务器的连接时,调用在被调用的同一线程中执行,但会等待直到过程完成。您必须设置一个 Timeout 以定义等待过程完成的最长时间(默认为 10 秒)。
示例:连接到服务器并等待最多 5 秒
oClient := TsgcWebSocketClient.Create(nil);
...
if oClient.Connect(5000) then
oClient.WriteData('Hello from client')
else
Error();
如果 Connect() 方法返回成功结果,您已经可以向服务器发送消息,因为连接已建立。
示例:从服务器断开连接并等待最多 10 秒
if oClient.Disconnect(10000) then
ShowMessage('Disconnected')
else
ShowMessage('Not Disconnected');
如果 Disconnect() 方法返回成功结果,则表示连接已经关闭。
OnBeforeConnect 事件可用于在客户端尝试连接之前自定义服务器连接属性。