TsgcWebSocketClient › プロパティ › QueueOptions
送信テキスト、バイナリ、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 より先に処理され、qmLevel2 は qmLevel3 より先に処理されます。これにより、優先度の高いカテゴリ(例:ping)をペイロードより先に配信できます。
MaxQueueSize は、キューが保持できるメッセージ数を制限します。ゼロ(デフォルト)は無制限を意味し、以前の動作が維持されます。制限に達すると、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;