TsgcWebSocketServerMétodos › Broadcast

Broadcast Método

Envía el mismo mensaje 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 un marco de texto a cada conexión activa que coincida con los filtros proporcionados. Los filtros se combinan con semántica AND: una conexión recibe el mensaje solo si satisface todos los filtros no vacíos, y nunca lo recibe si su GUID aparece en Exclude. Cuando LoadBalancer está habilitado, la llamada se reenvía por 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 llamante y retorna una vez que los marcos se entregan a cada socket; los errores de escritura por conexión se reportan 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 que supera los filtros de canal, protocolo, Include y Exclude. El flujo se lee desde su posición actual; el servidor no asume la propiedad, por lo que el llamador debe mantener el flujo activo hasta que Broadcast retorne. Cuando LoadBalancer está habilitado, la carga útil binaria se reenvía a otros nodos para que puedan redistribuirla a sus clientes locales. Use aSize junto con aStreaming para transmitir cargas útiles muy grandes como múltiples fragmentos WebSocket en lugar de un único frame de gran tamaño.

Ejemplo


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

Volver a Métodos