TsgcWebSocketProxyServer › 方法 › WriteData

WriteData 方法

通过连接 GUID 向代理上的单个 WebSocket 客户端发送消息。

重载

重载 1

语法

function WriteData(const aGuid, aMessage: string): Boolean;

参数

名称类型描述
aGuidconst string客户端握手完成后,由代理分配的目标连接的标识符。
aMessageconst string以 WebSocket 文本帧形式投递给该客户端的文本载荷。

返回值

当找到具有给定 GUID 的连接并且帧已传递到其套接字时为 True;当不存在匹配的活动连接时为 False。(Boolean)

备注

此重载查找 GUID 与 aGuid 匹配的 WebSocket 连接,并将文本消息发送给隧道浏览器侧的单个客户端。GUID 是 TsgcWSConnection.Guid 公开的值,通常在 OnConnect 中捕获并由应用程序存储。此调用不写入配对的上游 TCP 链接;使用它可以将数据从代理推送到浏览器客户端,而无需将字节路由通过后端 TCP 服务器。使用 Broadcast 可一次性向所有活跃 WebSocket 客户端发送消息。

示例


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

重载 2

语法

function WriteData(const aGuid: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

参数

名称类型描述
aGuidconst String客户端握手完成后,由代理分配的目标连接的标识符。
aStreamTStream包含发送给客户端内容的源流,作为 WebSocket 二进制帧。调用方仍是流的所有者。
aSizeInteger可选的片段大小(字节);当大于零时,流将被分割为多个此大小的片段。使用 0(默认值)以单个帧发送整个流。
aStreamingconst TwsStreaming分片传输的流模式(stmNone、stmStart、stmContinue、stmFinish)。默认为 stmNone,发送完整的独立消息。

返回值

当找到具有给定 GUID 的连接并将流交给其套接字时为 True;当不存在匹配的活动连接时为 False。(Boolean)

备注

此重载针对代理浏览器端的单个 WebSocket 客户端,发送从提供的流中读取的二进制负载。流从其当前位置消耗,服务器不获取所有权,因此调用方必须在 WriteData 返回之前保持流有效。与此 GUID 关联的上游 TCP 连接不在此处写入;字节仅投递给 WebSocket 对端。当发送需要跨多个 WebSocket 帧分片的超大负载时,请将 aSize 与 aStreaming 结合使用。

示例


oStream := TMemoryStream.Create;
try
  oStream.LoadFromFile('payload.bin');
  oServer.WriteData('guid', oStream);
finally
  oStream.Free;
end;

返回方法