TsgcWebSocketHTTPServer › Properties › QueueOptions
Sérialise les messages sortants via une file d'attente interne par connexion pour éviter les conflits entre les threads.
property QueueOptions: TsgcWSQueueServer_Options read FQueueOptions write SetQueueOptions;
Text.Level=qmNone, Binary.Level=qmNone, Ping.Level=qmNone
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) 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 livrés avant le trafic ordinaire. QueueOptions n'est pris en charge que par l'IOHandler par défaut. Lorsque IOHandlerOptions.IOHandlerType vaut iohIOCP ou iohEPOLL, 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.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.QueueOptions.Text.Level := qmLevel2;
oServer.QueueOptions.Binary.Level := qmLevel2;
oServer.QueueOptions.Ping.Level := qmLevel1;
oServer.Active := true;