TsgcWSPServer_sgc › 方法 › Broadcast
向所有已连接的客户端广播文本或流负载,可选择按频道过滤。
procedure Broadcast(aMessage: string; aChannel: string = ''; Exclude: String = ''; Include: String = '');
| 名称 | 类型 | 描述 |
|---|---|---|
aMessage | string | 包裹在 sgc 信封中的文本载荷,通过 OnMessage 投递给收件人。 |
aChannel | string | 可选的频道过滤器。若提供,则只有订阅该频道的客户端收到载荷;留空表示发送给所有连接。 |
Exclude | String | 不应接收广播的连接 Guid 的分号分隔列表。 |
Include | String | 以分号分隔的连接 GUID 列表,广播仅限于这些连接,覆盖频道过滤器。 |
文本重载。向选定的接收方发送一个 method=message 的信封。当 QoS 为 Level 1 或 Level 2 时,服务器将消息存储在待处理列表中,等待每个连接的确认,并在必要时重发;Level 0 时消息只发送一次,不进行追踪。
oProtocol.Broadcast('hello everyone');
oProtocol.Broadcast('channel update', 'news');
procedure Broadcast(aStream: TStream; aChannel: string = ''; Exclude: String = ''; Include: String = ''; aSize: Integer = 0; aStreaming: TwsStreaming = stmNone);
| 名称 | 类型 | 描述 |
|---|---|---|
aStream | TStream | 二进制载荷原样在 WebSocket 上发送;接收方通过 OnBinary 接收。 |
aChannel | string | 可选的频道过滤器。若提供,则只有订阅了该频道的客户端才会收到帧。 |
Exclude | String | 以分号分隔的连接 GUID 列表,这些连接不应接收该帧。 |
Include | String | 帧受限的连接 Guid 的分号分隔列表。 |
aSize | Integer | 载荷分片时的块大小(字节);传入 0 可将流作为单帧发送。 |
aStreaming | TwsStreaming | 流式传输策略(stmNone、stmFragmented、stmCustom),用于将流切分为帧。 |
二进制重载。将流直接分发给选定接收方,而不将其封装在 sgc JSON 信封中,因此客户端看到的是原始二进制帧。与文本重载不同,此路径不使用 QoS 待处理列表;在底层 WebSocket 传输上采用尽力而为的投递。
oStream := TFileStream.Create('image.png', fmOpenRead);
try
oProtocol.Broadcast(oStream, 'news');
finally
oStream.Free;
end;