TsgcWebSocketServer_HTTPAPIMé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 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.

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 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.

Ejemplo


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

Volver a Métodos