TsgcWebSocketServer_HTTPAPI › Methoden › WriteData
Sendet eine Nachricht an einen einzelnen Client, der durch seine Verbindungs-GUID identifiziert wird.
function WriteData(const aGUID, aMessage: string): Boolean;
| Name | Typ | Beschreibung |
|---|---|---|
aGUID | const string | Bezeichner der Zielverbindung, wie vom Server zugewiesen, als der Client-Handshake abgeschlossen wurde. |
aMessage | const string | Text-Payload, die diesem Client als WebSocket-Textframe zugestellt werden soll. |
True, wenn eine Verbindung mit der angegebenen GUID lokalisiert wurde und der Frame an ihren HTTP.sys-Socket übergeben wurde; False, wenn keine passende aktive Verbindung existiert. (Boolean)
Diese Überladung sucht die Verbindung, deren GUID mit aGUID übereinstimmt, und sendet die Textnachricht an diesen einzelnen Client. Die GUID ist der von TsgcWSConnection.Guid bereitgestellte Wert, typischerweise in OnConnect erfasst und von der Anwendung gespeichert. Wenn QueueOptions.Text auf einen anderen Wert als qmNone gesetzt ist, wird der Frame eingereiht und vom Verbindungsthread statt vom Thread des Aufrufers versendet, was Locks verhindert, wenn mehrere Threads an denselben Client senden. Wenn Asynchronous aktiviert ist, kehrt die Methode zurück, bevor HTTP.sys das Schreiben des Frames abgeschlossen hat; der Abschluss wird über OnAsynchronous gemeldet. Verwenden Sie Broadcast, um jeden aktiven Client in einem Aufruf zu erreichen.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Name | Typ | Beschreibung |
|---|---|---|
aGUID | const String | Bezeichner der Zielverbindung, wie vom Server zugewiesen, als der Client-Handshake abgeschlossen wurde. |
aStream | TStream | Quellstream, dessen Inhalt als binärer WebSocket-Frame an den Client gesendet wird. Der Aufrufer bleibt Eigentümer des Streams. |
aSize | Integer | Optionale Fragmentgröße in Bytes; wenn größer als null, wird der Stream in mehrere Fragmente dieser Größe aufgeteilt. Verwenden Sie 0 (Standard), um den gesamten Stream als einzelnen Frame zu senden. |
aStreaming | const TwsStreaming | Streaming-Modus für die fragmentierte Übertragung (stmNone, stmStart, stmContinue, stmFinish). Standard ist stmNone, was eine vollständige eigenständige Nachricht sendet. |
True, wenn eine Verbindung mit der angegebenen GUID gefunden und der Stream an ihren HTTP.sys-Socket übergeben wurde; False, wenn keine passende aktive Verbindung existiert. (Boolean)
Diese Überladung zielt mit einer binären Nutzlast, die aus dem bereitgestellten Stream gelesen wird, auf einen einzelnen Client ab. Der Stream wird ab seiner aktuellen Position konsumiert, und der Server übernimmt nicht das Eigentum, sodass der Aufrufer ihn am Leben halten muss, bis WriteData zurückkehrt (oder, beim Verwenden einer Warteschlange oder wenn Asynchronous aktiviert ist, bis der Sendevorgang tatsächlich abgeschlossen ist). Wenn QueueOptions.Binary auf einen anderen Wert als qmNone gesetzt ist, wird der Frame in eine Warteschlange gestellt und vom Verbindungs-Thread statt vom Thread des Aufrufers gesendet. Verwenden Sie aSize zusammen mit aStreaming, wenn Sie sehr große Nutzlasten senden, die über mehrere WebSocket-Frames fragmentiert statt als eine übergroße Nachricht in HTTP.sys gepuffert werden sollen.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;