TsgcWebSocketLoadBalancerServerMéthodes › WriteData

WriteData Méthode

Envoie un message WebSocket à un seul client identifié par son GUID de connexion, en acheminant la trame via le serveur de secours qui possède la session.

Surcharges

Surcharge 1

Syntaxe

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

Paramètres

NomTypeDescription
aGuid const stringIdentifiant de la connexion cible tel qu'assigné par le serveur de sauvegarde lors de la fin du handshake client.
aMessageconst stringCharge utile textuelle à livrer à ce client sous forme de trame de texte WebSocket.

Valeur de retour

True lorsqu'une connexion avec le GUID donné a été localisée sur un serveur de sauvegarde enregistré et que la trame a été transmise à son socket ; False lorsqu'aucune connexion active correspondante n'existe nulle part dans le cluster. (Boolean)

Remarques

Cette surcharge demande à l'équilibreur de charge de localiser le serveur de secours qui possède la connexion WebSocket dont le GUID correspond à aGuid et transmet le message texte à ce seul client. Le GUID est la valeur exposée par TsgcWSConnection.Guid, généralement capturée dans OnConnect et stockée par l'application. Seules les sessions WebSocket mises à niveau sont éligibles ; les GUIDs appartenant à des requêtes HTTP pures sont rejetés et False est retourné. Lorsque QueueOptions.Text est défini sur une valeur autre que qmNone, la trame est mise en file d'attente et distribuée depuis le thread de connexion plutôt que depuis le thread de l'appelant (non pris en charge lorsque IOHandlerOptions.IOHandlerType = iohIOCP). Utilisez Broadcast pour atteindre chaque client actif dans le cluster en un seul appel.

Exemple


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

Surcharge 2

Syntaxe

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

Paramètres

NomTypeDescription
aGuid const String Identifiant de la connexion cible tel qu'assigné par le serveur de sauvegarde lors de la fin du handshake client.
aStreamTStream Flux source dont le contenu est envoyé au client sous forme de trame binaire WebSocket. L'appelant reste propriétaire du flux.
aSizeIntegerTaille de fragment optionnelle en octets ; lorsqu'elle est supérieure à zéro, le flux 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.

Valeur de retour

True lorsqu'une connexion avec le GUID donné a été localisée sur un serveur de sauvegarde enregistré et que le flux a été transmis à son socket ; False lorsqu'aucune connexion active correspondante n'existe dans le cluster. (Boolean)

Remarques

Cette surcharge cible un seul client WebSocket avec une charge utile binaire lue depuis le flux fourni, acheminant les octets via l'équilibreur de charge vers le serveur de secours qui possède la session. Le flux est consommé depuis sa position courante et l'équilibreur de charge n'en prend pas possession, donc l'appelant doit le maintenir en vie jusqu'au retour de WriteData (ou, lors de la mise en file d'attente, jusqu'à la fin de l'envoi). Lorsque QueueOptions.Binary est défini sur une valeur autre que qmNone, la trame est mise en file d'attente et distribuée depuis le thread de connexion plutôt que depuis le thread de l'appelant (non pris en charge lorsque IOHandlerOptions.IOHandlerType = iohIOCP). Utiliser aSize avec aStreaming lors de l'envoi de charges utiles très volumineuses qui doivent être fragmentées sur plusieurs trames WebSocket.

Exemple


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

Retour aux méthodes