TsgcWebSocketClient › Méthodes › WriteData
Envoie un message texte au serveur WebSocket, en le divisant éventuellement en fragments d'une taille donnée.
procedure WriteData(const aText: String; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Nom | Type | Description |
|---|---|---|
aText | const String
| La charge utile texte à envoyer au serveur sous forme de trame texte WebSocket. |
aSize | const Integer
| Taille de fragment optionnelle en octets ; lorsqu'elle est supérieure à zéro, le message est divisé en plusieurs fragments de cette taille. Utilisez 0 (la valeur par défaut) pour envoyer le message entier 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. |
WriteData transmet la chaîne en tant que trame de texte WebSocket sur la connexion active. Par défaut, l'appel s'exécute sur le thread appelant et retourne une fois que les octets ont été remis au socket. Lorsque QueueOptions.Text est défini sur une valeur autre que qmNone, le message est mis en file d'attente et réellement envoyé depuis le propre thread de la connexion, ce qui évite les verrouillages lorsque plusieurs threads écrivent simultanément. Toute exception de socket est transmise à OnError. Utilisez la surcharge flux pour envoyer des charges utiles volumineuses ou des données binaires.
Lorsque le client n'est pas connecté, ou que son handshake WebSocket ne s'est pas encore terminé, rien n'est envoyé et l'échec est signalé via OnError avec Connection = nil et l'erreur Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED). L'événement se déclenche sur le thread appelant avant que WriteData ne retourne, et LastError contient le même texte. Aucune exception n'est levée vers l'appelant et le client n'est pas déconnecté. Définissez Options.RaiseDisconnectExceptions sur False pour ignorer ce signalement et abandonner le message silencieusement, comme le faisaient les versions précédentes. Lorsqu'un envoi échoue parce que sa connexion a été perdue et que le client s'est déjà reconnecté, l'échec est également signalé avec Connection = nil, de sorte que la nouvelle connexion reste ouverte.
oClient.WriteData('My First sgcWebSockets Message!.');
procedure WriteData(const aStream: TStream; const aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone);
| Nom | Type | Description |
|---|---|---|
aStream | const TStream
| Flux source dont le contenu sera envoyé sous forme d'une trame binaire WebSocket. L'appelant reste propriétaire du flux. |
aSize | const 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. |
WriteData lit le flux fourni depuis sa position actuelle et transmet le contenu sous forme de trame WebSocket binaire. L'appel s'exécute sur le thread appelant par défaut ; lorsque QueueOptions.Binary est défini sur une valeur autre que qmNone, le message est mis en file d'attente et effectivement distribué depuis le thread de connexion. Les exceptions de socket sont capturées et transmises à OnError. Lorsque le client n'est pas connecté, ou que son handshake ne s'est pas encore terminé, rien n'est envoyé et l'échec est signalé via OnError avec Connection = nil, comme décrit pour la surcharge texte. Libérez le flux uniquement après le retour de l'appel (ou, lors de la mise en file d'attente, après que l'envoi soit terminé).
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oClient.WriteData(oStream);
finally
oStream.Free;
end;