TsgcWebSocketClient › 方法 › Ping

Ping 方法

向服务器发送 WebSocket ping 帧,并立即返回,无需等待 pong 响应。

重载

重载 1

语法

procedure Ping(const aText: String = '');

参数

名称类型描述
aTextconst String在 ping 帧内携带的可选有效载荷;传入空字符串则发送不含有效载荷的 ping。

备注

此重载触发 ping 并立即返回,不阻塞调用者或等待匹配的 pong。当客户端没有连接时,不会发送任何内容,该失败会通过 OnError 报告,并将 Connection 设为 nil,错误信息为 Data not sent, the client is not connected or its handshake has not completed.。该事件会在 Ping 返回之前于调用线程上触发,且不会向调用方引发异常。将 Options.RaiseDisconnectExceptions 设置为 False 可跳过此报告。在 WebSocket 握手完成之前发送的 ping 不会被报告为错误,因为 HeartBeat 也是通过此方法发送 ping 的。从服务器收到的任何 pong 都通过标准连接事件异步传递。内部异常被捕获并路由到 OnError。当您需要确认对等方仍然可达时,请使用 另一个重载 的超时版本。

示例


oClient.Ping('keepalive');

重载 2

语法

function Ping(aTimeout: Integer; const aText: String = '') : Boolean;

参数

名称类型描述
aTimeoutInteger等待 pong 回复的最长时间(毫秒),超时后放弃。
aTextconst String在 ping 帧内携带的可选有效载荷;传入空字符串则发送不含有效载荷的 ping。

返回值

如果服务器在超时窗口内回复了匹配的 pong,则为 True;否则为 False。当返回 False 时,客户端可能选择关闭连接,因为对端被认为不可达。(Boolean)

备注

此重载会阻塞调用线程,直到收到 pong 或超时为止,因此适用于交互式存活检查。当客户端没有连接时,该方法会立即返回 False,并通过 OnError 以 Connection = nil 报告,如另一个重载中所述。底层套接字引发的异常将被捕获并转发至 OnError。如需不阻塞的即发即忘式 ping,请改用无参数的另一个重载。

示例


if not oClient.Ping(5000, 'healthcheck') then
  oClient.Disconnect;

返回方法