TsgcWebSocketServer › Métodos › Broadcast
Envía el mismo mensaje a todos los clientes conectados, opcionalmente filtrado por canal, protocolo o lista de GUID de conexión.
procedure Broadcast(const aMessage: string; const aChannel: string = ''; const aProtocol: string = ''; const Exclude: String = ''; const Include: String = '');
| Nombre | Tipo | Descripción |
|---|---|---|
aMessage | const string | Carga útil de texto entregada a cada cliente coincidente como un frame de texto WebSocket. |
aChannel | const string | Cuando no está vacío, el mensaje se envía únicamente a los clientes suscritos al canal indicado. |
aProtocol | const string | Cuando no está vacío, el mensaje se envía únicamente a los clientes que utilizan el subprotocolo WebSocket indicado. |
Exclude | const String | Lista separada por comas de GUIDs de conexión que deben omitirse en esta difusión. |
Include | const String | Lista separada por comas de GUIDs de conexión que restringen la difusión a ese subconjunto; se ignora cuando está vacía. |
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.
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);
| Nombre | Tipo | Descripción |
|---|---|---|
aStream | TStream | Flujo de origen cuyo contenido se entrega a cada cliente coincidente como un frame binario de WebSocket. El llamador sigue siendo el propietario del flujo. |
aChannel | const string | Cuando no está vacío, el mensaje se envía únicamente a los clientes suscritos al canal indicado. |
aProtocol | const string | Cuando no está vacío, el mensaje se envía únicamente a los clientes que utilizan el subprotocolo WebSocket indicado. |
Exclude | const String | Lista separada por comas de GUIDs de conexión que deben omitirse en esta difusión. |
Include | const String | Lista separada por comas de GUIDs de conexión que restringen la difusión a ese subconjunto; se ignora cuando está vacía. |
aSize | const Integer | Tamañ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. |
aStreaming | const TwsStreaming | Modo de transmisión para la transmisión fragmentada (stmNone, stmStart, stmContinue, stmFinish). El valor predeterminado es stmNone, que envía un mensaje completo independiente. |
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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;