TsgcWebSocketServer_HTTPAPI › 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 frame de texto a cada conexión WebSocket activa que coincida con los filtros proporcionados. Los filtros se combinan con semántica AND: una conexión recibe el mensaje solo cuando satisface todos los filtros no vacíos, y nunca lo recibe cuando su GUID aparece en Exclude. Cuando Asynchronous está habilitado, la llamada regresa antes de que se complete cada escritura en http.sys y el evento OnAsynchronous notifica la finalización; cuando está deshabilitado, la llamada se ejecuta en el hilo del llamante y regresa una vez que los frames están en cola para cada socket. Los errores de escritura por conexión se notifican a través de OnException sin abortar 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 transmite el contenido del stream como un fotograma binario a cada conexión que pasa los filtros de canal, protocolo, Include y Exclude. El stream se lee desde su posición actual; el servidor no toma la propiedad, por lo que el llamador debe mantener el stream activo hasta que Broadcast regrese (o, cuando Asynchronous está habilitado, hasta que el evento OnAsynchronous informe de la finalización). Use aSize junto con aStreaming para transmitir cargas útiles muy grandes como múltiples fragmentos WebSocket en lugar de un fotograma de gran tamaño, lo que es especialmente útil en HTTP.sys donde el kernel almacena en búfer los datos salientes.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.Broadcast(oStream);
finally
oStream.Free;
end;