TsgcWebSocketHTTPServer › Propiedades › QueueOptions
Serializa los mensajes salientes mediante una cola interna por conexión para evitar la contención entre hilos.
property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;
Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone
Cuando está habilitado, los mensajes se colocan en una cola interna y se envían en el contexto del hilo de conexión en lugar del hilo del invocador; esto elimina el bloqueo necesario cuando varios hilos escriben simultáneamente en la misma conexión. Cada tipo de mensaje (Text, Binary, Ping) es un subobjeto con su propia propiedad Level, que asigna una prioridad independiente: qmNone omite la cola (valor predeterminado), qmLevel0 se procesa primero, luego qmLevel1 y finalmente qmLevel2. Por ejemplo, configurar Text.Level y Binary.Level en qmLevel2 y Ping.Level en qmLevel1 garantiza que los pings se entreguen antes que el tráfico ordinario. QueueOptions solo es compatible con el IOHandler predeterminado. Cuando IOHandlerOptions.IOHandlerType es iohIOCP o iohEPOLL, la cola se desactiva al iniciarse el servidor: los tres niveles se restablecen a qmNone, el evento OnError lo notifica y los mensajes se escriben en línea en el hilo del invocador. Un nivel asignado cuando el servidor ya está escuchando se restablece del mismo modo en cada nueva conexión.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.QueueOptions.Text.Level := qmLevel2;
oServer.QueueOptions.Binary.Level := qmLevel2;
oServer.QueueOptions.Ping.Level := qmLevel1;
oServer.Active := true;