TsgcWebSocketServer_HTTPAPIMethods › Broadcast

Broadcast 方法

向所有已连接的客户端发送相同的消息,可选地按通道、协议或连接 GUID 列表进行过滤。

重载

重载 1

语法

procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');

参数

名称类型描述
aMessageconst string以 WebSocket 文本帧形式投递给每个匹配客户端的文本负载。
aChannelconst string当非空时,消息仅发送给订阅了给定频道的客户端。
aProtocolconst string当非空时,消息仅发送给使用给定 WebSocket 子协议的客户端。
Excludeconst String此广播应跳过的连接 GUID 的逗号分隔列表。
Includeconst String以逗号分隔的连接 GUID 列表,将广播限制在该子集内;为空时忽略。

备注

此重载向与提供的过滤器匹配的每个活跃 WebSocket 连接发送文本帧。过滤器以 AND 语义组合:一个连接只有在满足每个非空过滤器且其 GUID 未出现在 Exclude 中时才会收到消息。当启用 Asynchronous 时,调用在每次 HTTP.sys 写入完成之前返回,OnAsynchronous 事件报告完成;禁用时,调用在调用方线程上运行,并在帧排入每个套接字队列后返回。每个连接的写入错误通过 OnException 报告,而不会中止广播。

示例


oServer.Broadcast('Hello From Server');

重载 2

语法

procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

参数

名称类型描述
aStreamTStream源流,其内容作为 WebSocket 二进制帧投递给每个匹配的客户端。调用方保留流的所有权。
aChannelconst string当非空时,消息仅发送给订阅了给定频道的客户端。
aProtocolconst string当非空时,消息仅发送给使用给定 WebSocket 子协议的客户端。
Excludeconst String此广播应跳过的连接 GUID 的逗号分隔列表。
Includeconst String以逗号分隔的连接 GUID 列表,将广播限制在该子集内;为空时忽略。
aSizeconst Integer可选的分片大小(字节);大于零时,每个客户端以该大小的分片接收流。使用 0(默认值)将整个流作为单个帧发送。
aStreamingconst TwsStreaming分片传输的流模式(stmNonestmStartstmContinuestmFinish)。默认为 stmNone,发送完整的独立消息。

备注

此重载将流内容作为二进制帧广播给所有通过信道、协议、Include 和 Exclude 过滤器的连接。流从当前位置读取;服务器不取得流的所有权,因此调用方必须保持流存活,直到 Broadcast 返回(或者在启用 Asynchronous 时,直到 OnAsynchronous 事件报告完成)。将 aSizeaStreaming 配合使用,可将非常大的负载作为多个 WebSocket 分片而非一个超大帧进行流传输,这在 HTTP.sys 中内核缓冲出站数据时尤为有用。

示例


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

返回方法