TsgcWebSocketServer › 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=qmNone, Binary=qmNone, Ping=qmNone, MaxQueueSize=0, OverflowPolicy=qopDropOldest
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. A cada tipo de mensaje (Text, Binary, Ping) se le puede asignar un nivel de prioridad independiente: qmNone omite la cola (valor predeterminado), qmLevel1 se procesa primero, luego qmLevel2 y finalmente qmLevel3. Por ejemplo, configurar Text y Binary en qmLevel2 y Ping en qmLevel1 garantiza que los pings se entreguen antes que el tráfico ordinario. QueueOptions no es compatible cuando IOHandlerOptions está configurado en iohIOCP.
MaxQueueSize limita el número de mensajes que puede contener cada cola por conexión: cero (valor predeterminado) significa sin límite, conservando el comportamiento anterior. Cuando se alcanza el límite, OverflowPolicy decide qué ocurre con los mensajes nuevos: qopDropOldest (valor predeterminado) descarta el mensaje encolado más antiguo para hacer sitio, qopDropNewest descarta el mensaje nuevo y qopDisconnect lo descarta y cierra la conexión. Cada vez que se alcanza el límite, primero se dispara el evento OnSendBufferFull, lo que permite a la aplicación detectar consumidores lentos o anular el descarte.
oServer := TsgcWebSocketServer.Create(nil);
oServer.QueueOptions.Text := qmLevel2;
oServer.QueueOptions.Binary := qmLevel2;
oServer.QueueOptions.Ping := qmLevel1;
oServer.Active := true;