TsgcWebSocketClient속성 › QueueOptions

QueueOptions 속성

나가는 Text, Binary 및 Ping 메시지를 큐에 넣어 연결 스레드에서 직렬화되도록 합니다.

구문

property QueueOptions: TsgcWSQueueClient_Options read FQueueOptions write SetQueueOptions;

기본값

Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone, MaxQueueSize=0, OverflowPolicy=qopDropOldest

설명

기본적으로 메시지는 호출자 스레드에서 직접 작성됩니다. 큐 수준(qmLevel1, qmLevel2 또는 qmLevel3)을 할당하면 메시지가 큐에 들어가 연결 스레드에서 순차적으로 전송되며, 여러 스레드가 동시에 WriteData 또는 Ping을 호출할 때 잠금을 방지합니다. qmLevel1의 메시지는 qmLevel2보다 먼저 처리되고, qmLevel2qmLevel3보다 먼저 처리되므로, 우선순위가 높은 범주(예: ping)가 페이로드보다 먼저 전달될 수 있습니다.

MaxQueueSize는 큐가 보유할 수 있는 메시지 수를 제한합니다. 0(기본값)은 무제한을 의미하며 이전 동작을 유지합니다. 제한에 도달하면 OverflowPolicy가 새 메시지의 처리 방식을 결정합니다. qopDropOldest(기본값)는 공간을 확보하기 위해 가장 오래된 큐 메시지를 버리고, qopDropNewest는 새 메시지를 버리며, qopDisconnect는 메시지를 버리고 연결을 닫습니다. 제한에 도달할 때마다 OnSendBufferFull 이벤트가 먼저 발생하므로 애플리케이션이 백프레셔를 모니터링하거나 메시지 폐기를 재정의할 수 있습니다.

예제


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;

속성으로 돌아가기