TsgcWebSocketClient › Métodos › WriteAndWaitData
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.
function WriteAndWaitData(const aText: String; const aTimeout: Integer = 10000): string;
| Nombre | Tipo | Descripción |
|---|---|---|
aText | const String | La carga útil de texto a enviar al servidor como frame de texto WebSocket. |
aTimeout | const Integer | Tiempo máximo en milisegundos para esperar la respuesta del servidor. El valor predeterminado es 10000 (10 segundos). |
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)
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.
vReply := oClient.WriteAndWaitData('ping', 5000);
if vReply <> '' then
ShowMessage(vReply);
function WriteAndWaitData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone; const aTimeout: Integer = 10000) : TStream;
| Nombre | Tipo | Descripción |
|---|---|---|
aStream | const TStream | Flujo fuente cuyo contenido se enviará como un frame binario WebSocket. El llamante conserva la propiedad del flujo. |
aSize | const Integer | Tamañ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. |
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. |
aTimeout | const Integer | Tiempo máximo en milisegundos para esperar la respuesta del servidor. El valor predeterminado es 10000 (10 segundos). |
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)
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.
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;