TsgcWebSocketServerPropriétés › QueueOptions

QueueOptions Propriété

Sérialise les messages sortants via une file d'attente interne par connexion pour éviter les conflits entre les threads.

Syntaxe

property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;

Valeur par défaut

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

Remarques

Lorsqu'il est activé, les messages sont placés dans une file d'attente interne et envoyés dans le contexte du thread de connexion au lieu du thread de l'appelant — cela supprime le verrouillage nécessaire lorsque plusieurs threads écrivent simultanément sur la même connexion. Chaque type de message (Text, Binary, Ping) peut se voir attribuer un niveau de priorité indépendant : qmNone ignore la file d'attente (par défaut), qmLevel1 est traité en premier, puis qmLevel2 et enfin qmLevel3. Par exemple, définir Text et Binary à qmLevel2 et Ping à qmLevel1 garantit que les pings sont livrés avant le trafic ordinaire. QueueOptions n'est pas pris en charge lorsque IOHandlerOptions est défini sur iohIOCP.

MaxQueueSize limite le nombre de messages que chaque file d'attente par connexion peut contenir : zéro (par défaut) signifie illimité, ce qui conserve le comportement antérieur. Lorsque la limite est atteinte, OverflowPolicy décide du sort des nouveaux messages : qopDropOldest (par défaut) supprime le message en file le plus ancien pour faire de la place, qopDropNewest supprime le nouveau message et qopDisconnect le supprime et ferme la connexion. Chaque fois que la limite est atteinte, l'événement OnSendBufferFull se déclenche d'abord, permettant à l'application de détecter les consommateurs lents ou d'outrepasser la suppression.

Exemple


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

Retour aux propriétés