TsgcWebSocketClientMétodos › WriteAndWaitData

WriteAndWaitData Método

Envía un mensaje de texto y bloquea al llamador hasta que el servidor responde con un mensaje de texto o expira el tiempo de espera.

Sobrecargas

Sobrecarga 1

Sintaxis

function WriteAndWaitData(const aText: String; const aTimeout: Integer = 10000): string;

Parámetros

NombreTipoDescripción
aTextconst StringLa carga útil de texto a enviar al servidor como frame de texto WebSocket.
aTimeoutconst IntegerTiempo máximo en milisegundos para esperar la respuesta del servidor. El valor predeterminado es 10000 (10 segundos).

Valor de Retorno

El mensaje de texto recibido del servidor, o una cadena vacía cuando el tiempo de espera expiró, no había ninguna conexión disponible o se produjo un error. (string)

Observaciones

WriteAndWaitData es un método auxiliar de conveniencia para intercambios de tipo solicitud/respuesta sobre un WebSocket. Envía el frame de texto y luego bloquea el hilo llamante en un evento interno hasta que llega el siguiente mensaje de texto del servidor o se agota el tiempo de espera. Dado que bloquea el hilo, no debe llamarse desde el hilo principal de la interfaz de usuario a menos que se utilice un tiempo de espera corto. Se devuelve una cadena vacía cuando el cliente no está conectado o cuando el servidor no responde a tiempo; las excepciones a nivel de socket se capturan y se reenvían a OnError. Utilice la sobrecarga de stream cuando necesite enviar y recibir cargas útiles binarias.

Ejemplo


vReply := oClient.WriteAndWaitData('ping', 5000);
if vReply <> '' then
  ShowMessage(vReply);

Sobrecarga 2

Sintaxis

function WriteAndWaitData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone; const aTimeout: Integer = 10000) : TStream;

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 stream saliente se divide en múltiples fragmentos de ese tamaño. Use 0 (el valor predeterminado) para enviar el stream 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.
aTimeoutconst IntegerTiempo máximo en milisegundos para esperar la respuesta del servidor. El valor predeterminado es 10000 (10 segundos).

Valor de Retorno

Un flujo recién asignado que contiene el mensaje binario recibido del servidor, o nil si el tiempo de espera expiró, no había ninguna conexión disponible o se produjo un error. El llamador es responsable de liberar el flujo devuelto. (TStream)

Observaciones

Esta sobrecarga es el equivalente binario del texto la otra sobrecarga. Escribe el flujo proporcionado como un frame binario y luego bloquea el subproceso llamante en un evento interno hasta que llega el siguiente mensaje binario del servidor o se agota el tiempo de espera. Dado que bloquea, evite llamarlo desde el subproceso principal de la interfaz de usuario con un tiempo de espera largo. El valor de retorno es nil cuando el cliente no está conectado o el servidor no responde a tiempo; las excepciones se capturan y se reenvían a OnError. Libere tanto el flujo de origen (tras la llamada) como el flujo devuelto cuando haya terminado con ellos.

Ejemplo


oRequest := TMemoryStream.Create;
try
  oRequest.LoadFromFile('request.bin');
  oReply := oClient.WriteAndWaitData(oRequest, 0, stmNone, 5000);
  try
    if Assigned(oReply) then
      oReply.SaveToFile('reply.bin');
  finally
    oReply.Free;
  end;
finally
  oRequest.Free;
end;

Volver a Métodos