TsgcWebSocketServerPropriedades › QueueOptions

QueueOptions Propriedade

Serializa as mensagens de saída através de uma fila interna por conexão para evitar contenção entre threads.

Sintaxe

property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;

Valor Padrão

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

Observações

Quando habilitado, as mensagens são colocadas em uma fila interna e enviadas no contexto da thread da conexão em vez da thread do chamador. Isso elimina o bloqueio necessário quando várias threads escrevem na mesma conexão simultaneamente. Cada tipo de mensagem (Text, Binary, Ping) pode receber um nível de prioridade independente: qmNone ignora a fila (padrão), qmLevel1 é processado primeiro, depois qmLevel2 e por fim qmLevel3. Por exemplo, definir Text e Binary como qmLevel2 e Ping como qmLevel1 garante que os pings sejam entregues antes do tráfego comum. QueueOptions não é suportado quando IOHandlerOptions está definido como iohIOCP.

MaxQueueSize limita o número de mensagens que cada fila por conexão pode conter: zero (padrão) significa sem limite, mantendo o comportamento anterior. Quando o limite é atingido, OverflowPolicy decide o que acontece com as novas mensagens: qopDropOldest (padrão) descarta a mensagem enfileirada mais antiga para abrir espaço, qopDropNewest descarta a nova mensagem e qopDisconnect a descarta e fecha a conexão. Cada vez que o limite é atingido, o evento OnSendBufferFull é disparado primeiro, permitindo que a aplicação detecte consumidores lentos ou anule o descarte.

Exemplo


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

Voltar para Propriedades