TsgcWebSocketServer_HTTPAPI › Méthodes › WriteData
Envoie un message à un seul client identifié par son GUID de connexion.
function WriteData(const aGUID, aMessage: string): Boolean;
| Nom | Type | Description |
|---|---|---|
aGUID
| const string | Identifiant de la connexion cible tel qu'assigné par le serveur lors de la complétion de la handshake du client. |
aMessage | const string | Charge utile textuelle à livrer à ce client sous forme de trame de texte WebSocket. |
True lorsqu'une connexion avec le GUID donné a été localisée et que la trame a été remise à son socket HTTP.sys ; False lorsqu'aucune connexion active correspondante n'existe. (Boolean)
Cette surcharge recherche la connexion dont le GUID correspond à aGUID et envoie 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. Lorsque QueueOptions.Text est défini sur une valeur autre que qmNone, la trame est mise en file d'attente et expédiée depuis le thread de connexion plutôt que depuis le thread de l'appelant, ce qui évite les verrous lorsque plusieurs threads envoient au même client. Lorsque Asynchronous est activé, la méthode retourne avant que HTTP.sys n'ait terminé l'écriture de la trame ; la complétion est signalée via OnAsynchronous. Utilisez Broadcast pour atteindre chaque client actif en un seul appel.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Nom | Type | Description |
|---|---|---|
aGUID
| const String
| Identifiant de la connexion cible tel qu'assigné par le serveur lors de la complétion de la handshake du client. |
aStream | TStream
| Flux source dont le contenu est envoyé au client sous forme de trame binaire WebSocket. L'appelant reste propriétaire du flux. |
aSize | Integer | Taille 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. |
True si une connexion avec le GUID donné a été localisée et que le flux a été transmis à son socket HTTP.sys ; False si aucune connexion active correspondante n'existe. (Boolean)
Cette surcharge cible un seul client avec une charge utile binaire lue depuis le flux fourni. Le flux est consommé depuis sa position actuelle et le serveur n'en prend pas possession ; l'appelant doit donc le maintenir actif jusqu'au retour de WriteData (ou, lors de la mise en file d'attente ou lorsque Asynchronous est activé, jusqu'à ce que l'envoi soit réellement terminé). Lorsque QueueOptions.Binary est défini à une valeur autre que qmNone, la trame est mise en file d'attente et envoyée depuis le thread de connexion plutôt que depuis le thread de l'appelant. Utilisez aSize conjointement avec aStreaming lors de l'envoi de très grandes charges utiles qui doivent être fragmentées sur plusieurs trames WebSocket plutôt que mises en mémoire tampon comme un seul message surdimensionné dans HTTP.sys.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;