TsgcWebSocketClient › Właściwości › QueueOptions
Kolejkuje wychodzące wiadomości tekstowe, binarne i Ping, aby były serializowane na wątku połączenia.
property QueueOptions: TsgcWSQueueClient_Options read FQueueOptions write SetQueueOptions;
Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone, MaxQueueSize=0, OverflowPolicy=qopDropOldest
Domyślnie wiadomości są zapisywane bezpośrednio w wątku wywołującym. Przypisanie poziomu kolejki (qmLevel1, qmLevel2 lub qmLevel3) kolejkuje je i wysyła sekwencyjnie z wątku połączenia, unikając blokad gdy kilka wątków jednocześnie wywołuje WriteData lub Ping. Wiadomości na poziomie qmLevel1 są przetwarzane przed qmLevel2, a qmLevel2 przed qmLevel3, więc kategorie o wyższym priorytecie (na przykład ping) mogą być dostarczane przed ładunkami.
MaxQueueSize ogranicza liczbę wiadomości, jaką może przechowywać kolejka: zero (domyślnie) oznacza brak ograniczenia, zachowując dotychczasowe zachowanie. Po osiągnięciu limitu OverflowPolicy decyduje, co dzieje się z nowymi wiadomościami: qopDropOldest (domyślnie) odrzuca najstarszą wiadomość z kolejki, aby zrobić miejsce, qopDropNewest odrzuca nową wiadomość, a qopDisconnect odrzuca ją i zamyka połączenie. Za każdym razem, gdy limit zostaje osiągnięty, najpierw wywoływane jest zdarzenie OnSendBufferFull, co pozwala aplikacji monitorować przeciążenie (backpressure) lub anulować odrzucenie.
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;