TsgcWebSocketClientEigenschaften › QueueOptions

QueueOptions Eigenschaft

Stellt ausgehende Text-, Binär- und Ping-Nachrichten in die Warteschlange, sodass sie auf dem Verbindungs-Thread serialisiert werden.

Syntax

property QueueOptions: TsgcWSQueueClient_Options read FQueueOptions write SetQueueOptions;

Standardwert

Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone, MaxQueueSize=0, OverflowPolicy=qopDropOldest

Hinweise

Standardmäßig werden Nachrichten direkt im aufrufenden Thread geschrieben. Die Zuweisung einer Queue-Ebene (qmLevel1, qmLevel2 oder qmLevel3) reiht sie ein und sendet sie sequenziell aus dem Verbindungs-Thread, wodurch Sperren vermieden werden, wenn mehrere Threads gleichzeitig WriteData oder Ping aufrufen. Nachrichten auf qmLevel1 werden vor qmLevel2 verarbeitet und qmLevel2 vor qmLevel3, sodass Kategorien mit höherer Priorität (zum Beispiel Ping) vor Payloads geliefert werden können.

MaxQueueSize begrenzt die Anzahl der Nachrichten, die eine Warteschlange aufnehmen darf: Null (Standard) bedeutet unbegrenzt und behält das bisherige Verhalten bei. Wenn das Limit erreicht ist, entscheidet OverflowPolicy, was mit neuen Nachrichten geschieht: qopDropOldest (Standard) verwirft die älteste eingereihte Nachricht, um Platz zu schaffen, qopDropNewest verwirft die neue Nachricht und qopDisconnect verwirft sie und schließt die Verbindung. Jedes Mal, wenn das Limit erreicht wird, wird zuerst das Ereignis OnSendBufferFull ausgelöst, wodurch die Anwendung Gegendruck (Backpressure) überwachen oder das Verwerfen außer Kraft setzen kann.

Beispiel


oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.QueueOptions.Ping.Level := qmLevel1;
oClient.QueueOptions.Text.Level := qmLevel2;
oClient.QueueOptions.Binary.Level := qmLevel2;
oClient.Active := true;

Zurück zu Properties