TsgcWebSocketLoadBalancerServer › Métodos › Broadcast
Difunde uma mensagem WebSocket para cada servidor de backup no cluster, opcionalmente filtrada por canal, protocolo ou lista de GUIDs de conexão.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Name | Type | Descrição |
|---|---|---|
aMessage | const string | Payload de texto entregue a cada cliente correspondente como um frame de texto WebSocket. |
aChannel | const string | Quando não vazio, a mensagem é enviada apenas a clientes assinantes do canal informado. |
aProtocol | const string | Quando não vazia, a mensagem é enviada apenas a clientes que utilizam o subprotocolo WebSocket fornecido. |
Exclude | const String | Lista separada por vírgulas de GUIDs de conexão que devem ser ignorados por este broadcast. |
Include | const String | Lista de GUIDs de conexão separados por vírgula que restringe o broadcast a esse subconjunto; ignorado quando vazio. |
Esta sobrecarga envia um text frame através do balanceador de carga para que cada servidor de backup registrado o reentregue aos seus próprios clientes WebSocket conectados localmente. Os filtros são combinados com semântica AND: uma conexão recebe a mensagem apenas quando satisfaz cada filtro não vazio e nunca é alcançada quando seu GUID aparece em Exclude. Requisições HTTP/HTTP2 puras são ignoradas porque o Broadcast só tem como alvo clientes que concluíram o handshake WebSocket. O balanceador de carga encaminha o payload para cada nó de backup por sua vez; erros de escrita por conexão são reportados através de OnException sem abortar o broadcast. A chamada executa na thread do chamador e retorna assim que os frames são entregues a cada link em direção aos servidores de backup.
oServer.Broadcast('Hello From Server');
procedure Broadcast(aStream: TStream; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = ''; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Name | Type | Descrição |
|---|---|---|
aStream | TStream | Stream de origem cujo conteúdo é entregue a cada cliente correspondente como um quadro binário WebSocket. O chamador permanece o proprietário do stream. |
aChannel | const string | Quando não vazio, a mensagem é enviada apenas a clientes assinantes do canal informado. |
aProtocol | const string | Quando não vazia, a mensagem é enviada apenas a clientes que utilizam o subprotocolo WebSocket fornecido. |
Exclude | const String | Lista separada por vírgulas de GUIDs de conexão que devem ser ignorados por este broadcast. |
Include | const String | Lista de GUIDs de conexão separados por vírgula que restringe o broadcast a esse subconjunto; ignorado quando vazio. |
aSize | const Integer | Tamanho de fragmento opcional em bytes; quando maior que zero, cada cliente recebe o stream dividido em fragmentos deste tamanho. Utilize 0 (o padrão) para enviar o stream inteiro como um único frame. |
aStreaming | const TwsStreaming | Modo de streaming para transmissão fragmentada (stmNone, stmStart, stmContinue, stmFinish). Padrão stmNone, que envia uma mensagem completa e independente. |
Esta sobrecarga difunde o conteúdo do stream como um frame binário através do balanceador de carga, que encaminha o payload a cada servidor de backup registrado para que eles possam reentregá-lo aos seus clientes WebSocket locais. O stream é lido a partir de sua posição atual; o balanceador de carga não assume a propriedade, portanto o chamador deve manter o stream ativo até que Broadcast retorne. Os filtros channel, protocol, Include e Exclude são avaliados em cada nó de backup à medida que ele despacha o frame para suas próprias conexões. Use aSize junto com aStreaming para fazer stream de payloads muito grandes como vários fragmentos WebSocket, em vez de um frame de tamanho excessivo.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;