TsgcWebSocketServerProprietà › QueueOptions

QueueOptions Property

Serializza i messaggi in uscita tramite una coda interna per connessione per prevenire la contesa tra thread.

Sintassi

property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;

Valore predefinito

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

Note

Quando abilitato, i messaggi vengono collocati in una coda interna e inviati nel contesto del thread della connessione anziché nel thread del chiamante — questo elimina il blocco necessario quando più thread scrivono sulla stessa connessione contemporaneamente. Ogni tipo di messaggio (Text, Binary, Ping) può essere assegnato a un livello di priorità indipendente: qmNone salta la coda (predefinito), qmLevel1 viene elaborato per primo, poi qmLevel2 e infine qmLevel3. Ad esempio, impostare Text e Binary su qmLevel2 e Ping su qmLevel1 garantisce che i ping vengano consegnati prima del traffico ordinario. QueueOptions non è supportato quando IOHandlerOptions è impostato su iohIOCP.

MaxQueueSize limita il numero di messaggi che ogni coda per connessione può contenere: zero (predefinito) significa illimitato, mantenendo il comportamento precedente. Quando il limite viene raggiunto, OverflowPolicy decide cosa accade con i nuovi messaggi: qopDropOldest (predefinito) scarta il messaggio accodato più vecchio per fare spazio, qopDropNewest scarta il nuovo messaggio e qopDisconnect lo scarta e chiude la connessione. Ogni volta che il limite viene raggiunto, viene prima generato l'evento OnSendBufferFull, consentendo all'applicazione di rilevare i consumatori lenti o di annullare lo scarto.

Esempio


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

Torna alle Proprietà