TsgcWebSocketHTTPServerMétodos › Broadcast

Broadcast Método

Envía el mismo mensaje WebSocket a todos los clientes conectados, opcionalmente filtrado por canal, protocolo o lista de GUID de conexión.

Sobrecargas

Sobrecarga 1

Sintaxis

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

Parámetros

NombreTipoDescripción
aMessageconst stringCarga útil de texto entregada a cada cliente coincidente como un frame de texto WebSocket.
aChannelconst stringCuando no está vacío, el mensaje se envía únicamente a los clientes suscritos al canal indicado.
aProtocolconst stringCuando no está vacío, el mensaje se envía únicamente a los clientes que utilizan el subprotocolo WebSocket indicado.
Excludeconst StringLista separada por comas de GUIDs de conexión que deben omitirse en esta difusión.
Includeconst StringLista separada por comas de GUIDs de conexión que restringen la difusión a ese subconjunto; se ignora cuando está vacía.

Observaciones

Esta sobrecarga envía una trama de texto a cada conexión WebSocket activa alojada por el servidor HTTP que coincide con los filtros proporcionados. Los filtros se combinan con semántica AND: una conexión recibe el mensaje solo cuando satisface cada filtro no vacío, y nunca se alcanza cuando su GUID aparece en Exclude. Las solicitudes HTTP/HTTP2 puras se ignoran porque Broadcast solo se dirige a los clientes que completaron el protocolo de enlace WebSocket. Cuando LoadBalancer está habilitado, la llamada se reenvía por todo el clúster para que los nodos remotos también entreguen el mensaje a sus clientes locales. La llamada se ejecuta en el hilo del llamador y retorna una vez que las tramas se entregan a cada socket; los errores de escritura por conexión se notifican a través de OnException sin interrumpir la difusión.

Ejemplo


oServer.Broadcast('Hello From Server');

Sobrecarga 2

Sintaxis

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

NombreTipoDescripción
aStreamTStreamFlujo de origen cuyo contenido se entrega a cada cliente coincidente como un frame binario de WebSocket. El llamador sigue siendo el propietario del flujo.
aChannelconst stringCuando no está vacío, el mensaje se envía únicamente a los clientes suscritos al canal indicado.
aProtocolconst stringCuando no está vacío, el mensaje se envía únicamente a los clientes que utilizan el subprotocolo WebSocket indicado.
Excludeconst StringLista separada por comas de GUIDs de conexión que deben omitirse en esta difusión.
Includeconst StringLista separada por comas de GUIDs de conexión que restringen la difusión a ese subconjunto; se ignora cuando está vacía.
aSizeconst IntegerTamaño de fragmento opcional en bytes; cuando es mayor que cero, cada cliente recibe el flujo dividido en fragmentos de este tamaño. Use 0 (el valor predeterminado) para enviar el flujo completo como un único fotograma.
aStreamingconst TwsStreamingModo de transmisión para la transmisión fragmentada (stmNone, stmStart, stmContinue, stmFinish). El valor predeterminado es stmNone, que envía un mensaje completo independiente.

Observaciones

Esta sobrecarga difunde el contenido del flujo como un frame binario a cada conexión WebSocket alojada por el servidor HTTP que supera los filtros de canal, protocolo, Include y Exclude. El flujo se lee desde su posición actual; el servidor no toma posesión de él, por lo que el llamador debe mantener el flujo activo hasta que Broadcast retorne. Cuando LoadBalancer está habilitado, el payload binario se reenvía a otros nodos para que puedan entregarlo a sus clientes locales. Use aSize junto con aStreaming para transmitir payloads muy grandes como múltiples fragmentos de WebSocket en lugar de un único frame sobredimensionado.

Ejemplo


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

Volver a Métodos