TsgcWebSocketClientMéthodes › WriteAndWaitData

WriteAndWaitData Méthode

Envoie un message texte et bloque l'appelant jusqu'à ce que le serveur réponde avec un message texte ou que le délai d'attente soit dépassé.

Surcharges

Surcharge 1

Syntaxe

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

Paramètres

NomTypeDescription
aTextconst String La charge utile texte à envoyer au serveur sous forme de trame texte WebSocket.
aTimeoutconst Integer Durée maximale en millisecondes pour attendre la réponse du serveur. Par défaut 10000 (10 secondes).

Valeur de retour

Le message texte reçu du serveur, ou une chaîne vide si le délai d'attente a expiré, si aucune connexion n'était disponible ou si une erreur s'est produite. (string)

Remarques

WriteAndWaitData est un assistant pratique pour les échanges de type requête/réponse sur un WebSocket. Il envoie la trame de texte puis bloque le thread appelant sur un événement interne jusqu'à ce que le prochain message texte arrive du serveur ou que le délai d'attente expire. Étant donné qu'il bloque, il ne doit pas être appelé depuis le thread UI principal sauf si un délai d'attente court est utilisé. Une chaîne vide est retournée lorsque le client n'est pas connecté ou lorsque le serveur ne répond pas à temps ; les exceptions au niveau du socket sont interceptées et transmises à OnError. Utilisez la surcharge de flux lorsque vous devez envoyer et recevoir des charges utiles binaires.

Exemple


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

Surcharge 2

Syntaxe

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

Paramètres

NomTypeDescription
aStreamconst TStream Flux source dont le contenu sera envoyé sous forme d'une trame binaire WebSocket. L'appelant reste propriétaire du flux.
aSizeconst Integer Taille de fragment optionnelle en octets ; lorsqu'elle est supérieure à zéro, le flux sortant est découpé en plusieurs fragments de cette taille. Utilisez 0 (la valeur par défaut) pour envoyer l'intégralité du flux en une seule trame.
aStreaming const TwsStreaming Mode de streaming pour la transmission fragmentée (stmNone, stmStart, stmContinue, stmFinish). La valeur par défaut est stmNone, qui envoie un message autonome complet.
aTimeoutconst Integer Durée maximale en millisecondes pour attendre la réponse du serveur. Par défaut 10000 (10 secondes).

Valeur de retour

Un flux nouvellement alloué contenant le message binaire reçu du serveur, ou nil si le délai d'attente a expiré, si aucune connexion n'était disponible, ou si une erreur s'est produite. L'appelant est responsable de la libération du flux retourné. (TStream)

Remarques

Cette surcharge est la contrepartie binaire du texte l'autre surcharge. Elle écrit le flux fourni en tant que trame binaire puis bloque le thread appelant sur un événement interne jusqu'à ce que le prochain message binaire arrive du serveur ou que le délai d'attente expire. Étant bloquant, évitez de l'appeler depuis le thread principal de l'interface avec un long délai d'attente. La valeur de retour est nil lorsque le client n'est pas connecté ou que le serveur ne répond pas dans les délais ; les exceptions sont capturées et transmises à OnError. Libérez à la fois le flux source (après l'appel) et le flux retourné lorsque vous en avez terminé.

Exemple


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;

Retour aux méthodes