TsgcWebSocketHTTPServer › Eigenschappen › QueueOptions

QueueOptions Eigenschap

Serialiseert uitgaande berichten via een interne wachtrij per verbinding om contentie tussen threads te voorkomen.

Syntaxis

property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;

Standaardwaarde

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

Opmerkingen

Wanneer ingeschakeld, worden berichten in een interne wachtrij geplaatst en verzonden vanuit de verbindingsthread in plaats van de thread van de aanroeper. Hierdoor is geen vergrendeling nodig wanneer meerdere threads tegelijkertijd naar dezelfde verbinding schrijven. Elk berichttype (Text, Binary, Ping) is een subobject met een eigen eigenschap Level, die een onafhankelijke prioriteit toekent: qmNone slaat de wachtrij over (standaard), qmLevel0 wordt als eerste verwerkt, daarna qmLevel1 en tot slot qmLevel2. Door Text.Level en Binary.Level op qmLevel2 en Ping.Level op qmLevel1 in te stellen, is gegarandeerd dat pings vóór gewoon verkeer worden afgeleverd. QueueOptions wordt alleen ondersteund door de standaard-IOHandler. Wanneer IOHandlerOptions.IOHandlerType gelijk is aan iohIOCP of iohEPOLL, wordt de wachtrij uitgeschakeld zodra de server start: de drie niveaus worden teruggezet op qmNone, de gebeurtenis OnError meldt dit en berichten worden inline op de aanroepende thread geschreven. Een niveau dat wordt toegewezen nadat de server al luistert, wordt op dezelfde manier teruggezet bij elke nieuwe verbinding.

Voorbeeld


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

Terug naar Properties