TsgcWSPServer_sgc › Özellikler › UseMatchesMask
Kanal adlarının birebir dize eşleşmesi yerine maske tarzı eşleştirmeyle karşılaştırılmasını sağlar.
property UseMatchesMask: Boolean read FUseMatchesMask write FUseMatchesMask;
False
UseMatchesMask yalnızca çalışma zamanına özgü bir özelliktir, Object Inspector'da published değildir, bu nedenle yalnızca kod içinde ayarlanabilir. published değil public'tir.
Varsayılan olarak bir kanal argümanı (Subscribe, Broadcast, Publish, ... içinde) bir bağlantının abonelikleriyle birebir dize karşılaştırmasıyla eşleştirilir. UseMatchesMask True olduğunda, sunucu bunun yerine kanal argümanını Delphi maskesi (System.Masks.MatchesMask: * ve ? joker karakterleri, ayrıca [abc] gibi karakter kümeleri) olarak, halihazırda en az bir canlı abonesi olan kanal adları kümesine karşı genişletir. Maske hiçbir canlı kanalla eşleşmezse, argüman düz bir kanal adı olarak kullanılır.
UseMatchesMask, MQTT konu filtresi eşleştirmesi değildir. # ve + herhangi bir özel anlam taşımaz ve *, diğer her karakter gibi / karakterinin üzerinden de eşleşir; yol segmenti kavramı yoktur. MQTT uyumlu joker karakterler için bunun yerine TsgcWSPClient_MQTT / TsgcWSPServer_MQTT kullanın.
Bu seçenek en çok publish tarafında, bir mesajı o anda bir desenle eşleşen her kanala dağıtmak için kullanışlıdır:
oProtocol.Broadcast('payload', 'topic1/*');
subscribe tarafında kullanımı sınırlıdır: herhangi bir somut topic1/... kanalının abonesi olmadan Subscribe('topic1/*') gönderen bir istemci, maskenin karşısına genişleyecek henüz hiçbir şey olmadığından, basitçe topic1/* düz kanal adına abone edilir.
// 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/*');