TsgcWebSocketHTTPServerMétodos › Broadcast

Broadcast Método

Envia a mesma mensagem WebSocket para todos os clientes conectados, 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 frame de texto para cada conexão WebSocket ativa hospedada pelo servidor HTTP que corresponda aos filtros fornecidos. 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 tem como alvo apenas clientes que completaram o handshake WebSocket. Quando LoadBalancer está habilitado, a chamada é encaminhada por todo o cluster, de modo que os nós remotos também entregam a mensagem aos seus clientes locais. A chamada é executada na thread do chamador e retorna assim que os frames são entregues a cada socket; erros de escrita por conexão são reportados através de OnException sem abortar o broadcast.

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 transmite o conteúdo do fluxo como um frame binário para cada conexão WebSocket hospedada pelo servidor HTTP que passa nos filtros de canal, protocolo, Include e Exclude. O fluxo é lido a partir da posição atual; o servidor não assume sua propriedade, portanto o chamador deve mantê-lo vivo até que Broadcast retorne. Quando LoadBalancer está habilitado, o payload binário é encaminhado a outros nós para que possam reentregá-lo aos seus clientes locais. Use aSize junto com aStreaming para transmitir payloads muito grandes como múltiplos fragmentos WebSocket, em vez de um frame excessivamente grande.

Exemplo


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

Voltar para Métodos