TsgcWebSocketClient | 客户端打开连接

配置客户端连接到服务器后,有 3 种不同的方式打开新连接。

 

Active 属性

打开新连接最简便的方法是将 Active 属性设为 true,这将使用组件配置尝试连接到服务器。

如果将 Active 属性设为 false,则会在连接处于活动状态时关闭连接。

此方法在与调用方相同的线程中执行。因此,如果您从主线程调用它,该方法将在应用程序的主线程中执行。

 

打开连接


oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Active := true;

当您调用 Active = true 时,仍无法向服务器发送任何数据,因为客户端可能仍在连接中。 您必须首先等待 OnConnect 事件触发,然后才能开始向服务器发送消息。

 

 

关闭连接


oClient.Active := false;

当您调用 Active = false 时,您无法确定连接在此代码执行后立即关闭,因此必须等待 OnDisconnect 事件触发。

 

 

Start/Stop 方法

当您调用 Start() 或 Stop() 连接/断开服务器时,调用在辅助线程中执行,因此不会阻塞调用它的线程。如果您希望连接到服务器后让下面的代码继续执行,请使用此方法。

 

打开连接


oClient := TsgcWebSocketClient.Create(nil);
...
oClient.Start();

调用 Start() 后,仍然无法向服务器发送任何数据,因为客户端可能仍在连接中。您必须先等待 OnConnect 事件触发,然后才能开始向服务器发送消息。

 

关闭连接


oClient.Stop();

调用 Stop() 后,您无法确定连接是否已立即关闭,因此必须等待 OnDisconnect 事件触发。

 

 

Connect/Disconnect 方法

当您调用 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 事件可用于在客户端尝试连接之前自定义服务器连接属性。