TsgcWebSocketHTTPServer › Właściwości › QueueOptions
Serializuje wychodzące wiadomości przez wewnętrzną kolejkę per-połączenie, zapobiegając rywalizacji między wątkami.
property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;
Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone
Po włączeniu wiadomości są umieszczane w wewnętrznej kolejce i wysyłane w kontekście wątku połączenia zamiast wątku wywołującego, co eliminuje konieczność blokowania potrzebnego, gdy kilka wątków zapisuje do tego samego połączenia jednocześnie. Każdy typ wiadomości (Text, Binary, Ping) jest podobiektem z własną właściwością Level, która nadaje niezależny priorytet: qmNone pomija kolejkę (domyślnie), qmLevel0 jest przetwarzany jako pierwszy, następnie qmLevel1, a na końcu qmLevel2. Na przykład ustawienie Text.Level i Binary.Level na qmLevel2, a Ping.Level na qmLevel1 gwarantuje, że pingi są dostarczane przed zwykłym ruchem. QueueOptions jest obsługiwane wyłącznie przez domyślny IOHandler. Gdy IOHandlerOptions.IOHandlerType ma wartość iohIOCP lub iohEPOLL, kolejka jest wyłączana w chwili uruchomienia serwera: trzy poziomy są resetowane do qmNone, zdarzenie OnError zgłasza ten fakt, a wiadomości są zapisywane bezpośrednio w wątku wywołującym. Poziom przypisany, gdy serwer już nasłuchuje, jest resetowany w ten sam sposób przy każdym nowym połączeniu.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.QueueOptions.Text.Level := qmLevel2;
oServer.QueueOptions.Binary.Level := qmLevel2;
oServer.QueueOptions.Ping.Level := qmLevel1;
oServer.Active := true;