TsgcWebSocketClient › Métodos › WriteData

WriteData Método

Envía un mensaje de texto al servidor WebSocket, dividiéndolo opcionalmente en fragmentos de un tamaño determinado.

Sobrecargas

Sobrecarga 1

Sintaxis

procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parámetros

NombreTipoDescripción
aTextconst StringLa carga útil de texto a enviar al servidor como frame de texto WebSocket.
aSizeconst IntegerTamaño de fragmento opcional en bytes; cuando es mayor que cero, el mensaje se divide en varios fragmentos de este tamaño. Use 0 (valor predeterminado) para enviar el mensaje completo 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.

Observaciones

WriteData transmite la cadena como una trama de texto WebSocket en la conexión activa. De forma predeterminada, la llamada se ejecuta en el hilo que la invoca y retorna una vez que los bytes se han entregado al socket. Cuando QueueOptions.Text se establece en un valor distinto de qmNone, el mensaje se pone en cola y realmente se envía desde el propio hilo de la conexión, lo que evita bloqueos cuando varios hilos escriben concurrentemente. Cualquier excepción de socket se reenvía a OnError. Use la sobrecarga de flujo al enviar cargas útiles grandes o datos binarios.

Cuando el cliente no está conectado, o su handshake de WebSocket aún no se ha completado, no se envía nada y el fallo se informa a través de OnError con Connection = nil y el error Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED). El evento se activa en el hilo que realiza la llamada, antes de que WriteData retorne, y LastError contiene el mismo texto. No se genera ninguna excepción hacia el llamador y el cliente no se desconecta. Establezca Options.RaiseDisconnectExceptions en False para omitir este aviso y descartar el mensaje en silencio, como hacían las versiones anteriores. Cuando una escritura falla porque su conexión se perdió y el cliente ya se ha reconectado, el fallo también se informa con Connection = nil, de modo que la nueva conexión permanece abierta.

Ejemplo


oClient.WriteData('My First sgcWebSockets Message!.');

Sobrecarga 2

Sintaxis

procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);

Parámetros

NombreTipoDescripción
aStreamconst TStreamFlujo fuente cuyo contenido se enviará como un frame binario WebSocket. El llamante conserva la propiedad del flujo.
aSizeconst IntegerTamañ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.

Observaciones

WriteData lee el stream suministrado desde su posición actual y transmite el contenido como un frame binario WebSocket. La llamada se ejecuta en el hilo que la invoca de forma predeterminada; cuando QueueOptions.Binary se establece en un valor distinto de qmNone, el mensaje se pone en cola y se despacha desde el hilo de conexión. Las excepciones de socket se capturan y se reenvían a OnError. Cuando el cliente no está conectado, o su handshake aún no se ha completado, no se envía nada y el fallo se informa a través de OnError con Connection = nil, tal y como se describe para la sobrecarga de texto. Libere el stream solo después de que la llamada retorne (o, cuando se utilice cola, después de que el envío se complete).

Ejemplo


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

Volver a Métodos