TsgcWebSocketHTTPServer › Métodos › Broadcast
Envía el mismo mensaje WebSocket 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 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.
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 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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;