TsgcWebSocketLoadBalancerServerMétodos › Broadcast

Broadcast Método

Difunde uma mensagem WebSocket para cada servidor de backup no cluster, opcionalmente filtrada por canal, protocolo ou lista de GUIDs de conexão.

Overloads

Overload 1

Sintaxe

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

Parâmetros

NameTypeDescrição
aMessageconst stringPayload de texto entregue a cada cliente correspondente como um frame de texto WebSocket.
aChannelconst stringQuando não vazio, a mensagem é enviada apenas a clientes assinantes do canal informado.
aProtocolconst stringQuando não vazia, a mensagem é enviada apenas a clientes que utilizam o subprotocolo WebSocket fornecido.
Excludeconst StringLista separada por vírgulas de GUIDs de conexão que devem ser ignorados por este broadcast.
Includeconst StringLista de GUIDs de conexão separados por vírgula que restringe o broadcast a esse subconjunto; ignorado quando vazio.

Observações

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.

Exemplo


oServer.Broadcast('Hello From Server');

Sobrecarga 2

Sintaxe

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

Parâmetros

NameTypeDescrição
aStreamTStreamStream de origem cujo conteúdo é entregue a cada cliente correspondente como um quadro binário WebSocket. O chamador permanece o proprietário do stream.
aChannelconst stringQuando não vazio, a mensagem é enviada apenas a clientes assinantes do canal informado.
aProtocolconst stringQuando não vazia, a mensagem é enviada apenas a clientes que utilizam o subprotocolo WebSocket fornecido.
Excludeconst StringLista separada por vírgulas de GUIDs de conexão que devem ser ignorados por este broadcast.
Includeconst StringLista de GUIDs de conexão separados por vírgula que restringe o broadcast a esse subconjunto; ignorado quando vazio.
aSizeconst IntegerTamanho 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.
aStreamingconst TwsStreamingModo de streaming para transmissão fragmentada (stmNone, stmStart, stmContinue, stmFinish). Padrão stmNone, que envia uma mensagem completa e independente.

Observações

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.

Exemplo


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

Voltar para Métodos