TsgcWSPServer_sgc › Propriétés › UseMatchesMask

UseMatchesMask Propriété

Active la correspondance de type masque pour les noms de canaux au lieu d'une correspondance de chaîne exacte.

Syntaxe

property UseMatchesMask: Boolean read FUseMatchesMask write FUseMatchesMask;

Valeur par défaut

False

Remarques

UseMatchesMask est une propriété disponible uniquement à l'exécution ; elle n'est pas publiée dans l'Object Inspector et ne peut donc être définie que par code. Elle est public, et non published.

Par défaut, un argument de canal (dans Subscribe, Broadcast, Publish, ...) est comparé aux abonnements d'une connexion par une comparaison de chaîne exacte. Lorsque UseMatchesMask vaut True, le serveur développe à la place l'argument de canal comme un masque Delphi (System.Masks.MatchesMask : jokers * et ?, ainsi que des ensembles de caractères tels que [abc]) par rapport à l'ensemble des noms de canaux ayant actuellement au moins un abonné actif. Si le masque ne correspond à aucun canal actif, l'argument est utilisé comme un nom de canal littéral.

UseMatchesMask n'est pas une correspondance de filtre de sujet MQTT. # et + n'ont aucune signification particulière, et * correspond aussi à travers / comme n'importe quel autre caractère : il n'y a pas de notion de segment de chemin. Pour des jokers conformes à MQTT, utilisez plutôt TsgcWSPClient_MQTT / TsgcWSPServer_MQTT.

Cette option est surtout utile côté publication, pour diffuser un message vers tous les canaux correspondant actuellement à un motif :

oProtocol.Broadcast('payload', 'topic1/*');

Elle est d'une utilité limitée côté abonnement : un client qui envoie Subscribe('topic1/*') avant qu'un canal concret topic1/... n'ait d'abonné est simplement abonné au nom de canal littéral topic1/*, car il n'y a encore rien contre quoi le masque puisse se développer.

Exemple

// server side, enable mask matching for this protocol instance
sgcWSPServer_sgc1.UseMatchesMask := True;

// clients subscribe to concrete channel names
// sgcWSPClient_sgc1.Subscribe('topic1/a');
// sgcWSPClient_sgc2.Subscribe('topic1/b');

// publish once, delivered to every live channel matching the mask
sgcWSPServer_sgc1.Broadcast('payload', 'topic1/*');

Retour aux propriétés