TsgcWebSocketServer_HTTPAPI › Proprietà › 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.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone

Note

Quando abilitato, i messaggi vengono inseriti in una coda interna e inviati nel contesto del thread di connessione anziché nel thread del chiamante. Questo elimina il locking necessario quando più thread scrivono sulla stessa connessione contemporaneamente. Ciascun tipo di messaggio (Text, Binary, Ping) è un sotto-oggetto con una propria proprietà Level, che assegna una priorità indipendente: qmNone bypassa la coda (valore predefinito), qmLevel0 viene elaborato per primo, poi qmLevel1 e infine qmLevel2. Ad esempio, impostando Text.Level e Binary.Level a qmLevel2 e Ping.Level a qmLevel1 si garantisce che i ping vengano consegnati prima del traffico ordinario.

QueueOptions non è supportato dal server HTTP.sys. La coda viene disattivata all'avvio del server: i tre livelli vengono reimpostati su qmNone, l'evento OnError lo segnala e i messaggi vengono scritti inline sul thread del chiamante. Un livello assegnato quando il server è già in ascolto viene reimpostato allo stesso modo a ogni nuova connessione. Il motore http.sys è guidato dai completamenti IOCP e non ha un ciclo per connessione da cui svuotare una coda, quindi un messaggio in coda non raggiungerebbe mai il socket.

Esempio


oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
// QueueOptions is not supported here, the three levels are reset to qmNone on start
oServer.Active := true;

Torna alle Proprietà