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

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 sur la même connexion simultanément. Chaque type de message (Text, Binary, Ping) est un sous-objet doté de sa propre propriété Level, qui lui attribue une priorité indépendante : qmNone ignore la file d'attente (par défaut), qmLevel0 est traité en premier, puis qmLevel1 et enfin qmLevel2. Par exemple, définir Text.Level et Binary.Level à qmLevel2 et Ping.Level à qmLevel1 garantit que les pings sont délivrés avant le trafic ordinaire.

QueueOptions n'est pas pris en charge par le serveur HTTP.sys. La file d'attente est désactivée au démarrage du serveur : les trois niveaux sont réinitialisés à qmNone, l'événement OnError le signale et les messages sont écrits en ligne sur le thread appelant. Un niveau attribué alors que le serveur est déjà en écoute est réinitialisé de la même manière à chaque nouvelle connexion. Le moteur http.sys est piloté par les complétions IOCP et ne dispose d'aucune boucle par connexion permettant de vider une file d'attente, de sorte qu'un message mis en file n'atteindrait jamais le socket.

Exemple


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

Retour aux propriétés