TsgcWebSocketServer_HTTPAPI › Eigenschaften › QueueOptions
Serialisiert ausgehende Nachrichten über eine interne Warteschlange pro Verbindung, um Konkurrenz zwischen Threads zu vermeiden.
property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;
Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone
Wenn aktiviert, werden Nachrichten in eine interne Queue gestellt und im Kontext des Verbindungsthreads anstatt im Thread des Aufrufers gesendet. Das beseitigt die Sperrung, die erforderlich ist, 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. Zum Beispiel garantiert das Setzen von Text.Level und Binary.Level auf qmLevel2 und Ping.Level auf qmLevel1, dass Pings vor dem gewöhnlichen Verkehr geliefert werden.
QueueOptions wird vom HTTP.sys-Server nicht unterstützt. Die Queue wird 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. Die http.sys-Engine wird durch IOCP-Completions gesteuert und besitzt keine Schleife pro Verbindung, aus der eine Queue geleert werden könnte, daher würde eine eingereihte Nachricht den Socket nie erreichen.
oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
// QueueOptions is not supported here, the three levels are reset to qmNone on start
oServer.Active := true;