TsgcWebSocketLoadBalancerServerMethoden › WriteData

WriteData Methode

Sendet eine WebSocket-Nachricht an einen einzelnen Client, der durch seine Verbindungs-GUID identifiziert wird, und routet den Frame durch den Backup-Server, der die Sitzung besitzt.

Überladungen

Overload 1

Syntax

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

Parameter

NameTypBeschreibung
aGuidconst stringBezeichner der Zielverbindung, wie er vom Backup-Server beim Abschluss des Client-Handshakes zugewiesen wurde.
aMessageconst stringText-Payload, die diesem Client als WebSocket-Textframe zugestellt werden soll.

Rückgabewert

True, wenn eine Verbindung mit der angegebenen GUID auf einem registrierten Backup-Server gefunden und der Frame an dessen Socket weitergeleitet wurde; False, wenn nirgendwo im Cluster eine passende aktive Verbindung existiert. (Boolean)

Hinweise

Diese Überladung fordert den Load Balancer auf, den Backup-Server zu lokalisieren, der die WebSocket-Verbindung besitzt, deren GUID mit aGuid übereinstimmt, und leitet die Textnachricht an diesen einzelnen Client weiter. Die GUID ist der von TsgcWSConnection.Guid bereitgestellte Wert, der typischerweise in OnConnect erfasst und von der Anwendung gespeichert wird. Nur upgegradete WebSocket-Sitzungen sind zulässig; GUIDs, die zu reinen HTTP-Anfragen gehören, werden abgelehnt und False wird zurückgegeben. Wenn QueueOptions.Text auf einen anderen Wert als qmNone gesetzt ist, wird der Frame in die Warteschlange gestellt und vom Verbindungs-Thread anstatt vom Thread des Aufrufers gesendet (nicht unterstützt, wenn IOHandlerOptions.IOHandlerType = iohIOCP). Verwenden Sie Broadcast, um jeden aktiven Client im gesamten Cluster mit einem einzigen Aufruf zu erreichen.

Beispiel


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

Überladung 2

Syntax

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

Parameter

NameTypBeschreibung
aGuidconst StringBezeichner der Zielverbindung, wie er vom Backup-Server beim Abschluss des Client-Handshakes zugewiesen wurde.
aStreamTStreamQuellstream, dessen Inhalt als binärer WebSocket-Frame an den Client gesendet wird. Der Aufrufer bleibt Eigentümer des Streams.
aSizeIntegerOptionale 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.
aStreamingconst TwsStreamingStreaming-Modus für die fragmentierte Übertragung (stmNone, stmStart, stmContinue, stmFinish). Standard ist stmNone, was eine vollständige eigenständige Nachricht sendet.

Rückgabewert

True, wenn eine Verbindung mit der angegebenen GUID auf einem registrierten Backup-Server gefunden und der Stream an deren Socket weitergeleitet wurde; False, wenn nirgendwo im Cluster eine passende aktive Verbindung existiert. (Boolean)

Hinweise

Diese Überladung richtet sich an einen einzelnen WebSocket-Client mit einer binären Nutzlast, die aus dem bereitgestellten Stream gelesen wird, und routet die Bytes über den Load Balancer zum Backup-Server, der die Sitzung besitzt. Der Stream wird ab seiner aktuellen Position konsumiert, und der Load Balancer übernimmt nicht den Besitz, sodass der Aufrufer ihn am Leben erhalten muss, bis WriteData zurückkehrt (oder, beim Einreihen in die Warteschlange, bis der Sendevorgang abgeschlossen ist). Wenn QueueOptions.Binary auf einen anderen Wert als qmNone gesetzt ist, wird der Frame in die Warteschlange gestellt und vom Verbindungs-Thread statt vom Thread des Aufrufers versendet (nicht unterstützt, wenn IOHandlerOptions.IOHandlerType = iohIOCP). Verwenden Sie aSize zusammen mit aStreaming, wenn Sie sehr große Nutzlasten senden, die über mehrere WebSocket-Frames fragmentiert werden sollen.

Beispiel


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

Zurück zu Methoden