TsgcWebSocketServer_HTTPAPIMétodos › WriteData

WriteData Método

Envía un mensaje a un único cliente identificado por su GUID de conexión.

Sobrecargas

Sobrecarga 1

Sintaxis

function WriteData(const aGUID, aMessage: string): Boolean;

Parámetros

NombreTipoDescripción
aGUIDconst stringIdentificador de la conexión de destino asignado por el servidor cuando se completó el handshake del cliente.
aMessageconst stringPayload de texto que se enviará a ese cliente como una trama de texto WebSocket.

Valor de Retorno

True cuando se localizó una conexión con el GUID indicado y el frame se entregó a su socket HTTP.sys; False cuando no existe ninguna conexión activa coincidente. (Boolean)

Observaciones

Esta sobrecarga busca la conexión cuyo GUID coincide con aGUID y envía el mensaje de texto a ese único cliente. El GUID es el valor expuesto por TsgcWSConnection.Guid, capturado normalmente en OnConnect y almacenado por la aplicación. Cuando QueueOptions.Text se establece en un valor distinto de qmNone, el frame se encola y se despacha desde el hilo de la conexión en lugar del hilo del llamador, lo que evita bloqueos cuando varios hilos envían al mismo cliente. Cuando Asynchronous está activado, el método retorna antes de que HTTP.sys haya terminado de escribir el frame; la finalización se notifica a través de OnAsynchronous. Use Broadcast para llegar a todos los clientes activos en una sola llamada.

Ejemplo


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

Sobrecarga 2

Sintaxis

function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

Parámetros

NombreTipoDescripción
aGUIDconst StringIdentificador de la conexión de destino asignado por el servidor cuando se completó el handshake del cliente.
aStreamTStreamFlujo de origen cuyo contenido se envía al cliente como un frame binario WebSocket. El llamador sigue siendo el propietario del flujo.
aSizeIntegerTamaño de fragmento opcional en bytes; cuando es mayor que cero, el flujo se divide en múltiples fragmentos de este tamaño. Use 0 (el valor predeterminado) para enviar todo el flujo como un único frame.
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.

Valor de Retorno

True cuando se localizó una conexión con el GUID indicado y el stream fue entregado a su socket HTTP.sys; False cuando no existe ninguna conexión activa coincidente. (Boolean)

Observaciones

Esta sobrecarga apunta a un único cliente con una carga útil binaria leída desde el flujo suministrado. El flujo se consume desde su posición actual y el servidor no toma posesión del mismo, por lo que la persona que realiza la llamada debe mantenerlo activo hasta que WriteData retorne (o, cuando se utiliza cola o cuando Asynchronous está habilitado, hasta que el envío se haya completado efectivamente). Cuando QueueOptions.Binary está establecido en un valor distinto de qmNone, la trama se pone en cola y se despacha desde el hilo de conexión en lugar del hilo de la persona que realiza la llamada. Use aSize junto con aStreaming cuando envíe cargas útiles muy grandes que deban fragmentarse en varios marcos WebSocket en lugar de almacenarse como un único mensaje demasiado grande en HTTP.sys.

Ejemplo


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

Volver a Métodos