TsgcWebSocketServer_HTTPAPI › 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 llamador; esto elimina el bloqueo necesario cuando varios hilos escriben en la misma conexión simultáneamente. Cada tipo de mensaje (Text, Binary, Ping) es un subobjeto con su propia propiedad Level, que asigna una prioridad independiente: qmNone omite la cola (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 no es compatible con el servidor HTTP.sys. 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 llamador. Un nivel asignado cuando el servidor ya está escuchando se restablece del mismo modo en cada nueva conexión. El motor http.sys se basa en compleciones IOCP y no tiene un bucle por conexión desde el que vaciar una cola, por lo que un mensaje encolado nunca llegaría al socket.
oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
// QueueOptions is not supported here, the three levels are reset to qmNone on start
oServer.Active := true;