TsgcWebSocketHTTPServer › Properties › QueueOptions

QueueOptions Eigenschaft

Serialisiert ausgehende Nachrichten über eine interne Warteschlange pro Verbindung, um Konkurrenz zwischen Threads zu vermeiden.

Syntax

property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;

Standardwert

Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone

Hinweise

Wenn aktiviert, werden Nachrichten in eine interne Queue gestellt und im Kontext des Verbindungs-Threads statt des Threads des Aufrufers gesendet. Das beseitigt das Locking, das benötigt wird, wenn mehrere Threads gleichzeitig in dieselbe Verbindung schreiben. Jeder Nachrichtentyp (Text, Binary, Ping) ist ein Unterobjekt mit einer eigenen Level-Eigenschaft, die eine unabhängige Priorität zuweist: qmNone überspringt die Queue (Standard), qmLevel0 wird zuerst verarbeitet, dann qmLevel1 und schließlich qmLevel2. Wenn Sie zum Beispiel Text.Level und Binary.Level auf qmLevel2 und Ping.Level auf qmLevel1 setzen, wird garantiert, dass Pings vor dem normalen Datenverkehr zugestellt werden. QueueOptions wird nur vom Standard-IOHandler unterstützt. Wenn IOHandlerOptions.IOHandlerType auf iohIOCP oder iohEPOLL steht, wird die Queue beim Start des Servers abgeschaltet: Die drei Stufen werden auf qmNone zurückgesetzt, das Ereignis OnError meldet dies, und Nachrichten werden inline im aufrufenden Thread geschrieben. Eine Stufe, die zugewiesen wird, nachdem der Server bereits lauscht, wird bei jeder neuen Verbindung auf dieselbe Weise zurückgesetzt.

Beispiel


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.QueueOptions.Text.Level := qmLevel2;
oServer.QueueOptions.Binary.Level := qmLevel2;
oServer.QueueOptions.Ping.Level := qmLevel1;
oServer.Active := true;

Zurück zu Properties