TsgcWSPServer_sgcProperties › UseMatchesMask

UseMatchesMask Właściwość

Włącza dopasowywanie nazw kanałów w stylu maski zamiast dokładnego dopasowania ciągu znaków.

Składnia

property UseMatchesMask: Boolean read FUseMatchesMask write FUseMatchesMask;

Wartość domyślna

False

Uwagi

UseMatchesMask jest właściwością dostępną tylko w czasie działania programu, nie jest publikowana w Object Inspector, więc można ją ustawić wyłącznie w kodzie. Jest public, a nie published.

Domyślnie argument kanału (w Subscribe, Broadcast, Publish, ...) jest dopasowywany do subskrypcji połączenia poprzez dokładne porównanie ciągów znaków. Gdy UseMatchesMask ma wartość True, serwer zamiast tego rozwija argument kanału jako maskę Delphi (System.Masks.MatchesMask: symbole wieloznaczne * i ?, a także zestawy znaków, takie jak [abc]) względem zbioru nazw kanałów, które mają obecnie co najmniej jednego aktywnego subskrybenta. Jeśli maska nie pasuje do żadnego aktywnego kanału, argument jest używany jako dosłowna nazwa kanału.

UseMatchesMask nie jest dopasowywaniem filtrów tematów MQTT. # i + nie mają specjalnego znaczenia, a * dopasowuje również znak /, tak jak każdy inny znak, nie istnieje pojęcie segmentu ścieżki. Do dopasowywania zgodnego z MQTT użyj zamiast tego TsgcWSPClient_MQTT / TsgcWSPServer_MQTT.

Ta opcja jest najbardziej przydatna po stronie publikowania, aby rozesłać wiadomość do wszystkich kanałów aktualnie pasujących do wzorca:

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

Jej zastosowanie po stronie subskrypcji jest ograniczone: klient, który wysyła Subscribe('topic1/*'), zanim jakikolwiek konkretny kanał topic1/... ma subskrybenta, jest po prostu subskrybowany do dosłownej nazwy kanału topic1/*, ponieważ nie ma jeszcze niczego, względem czego maska mogłaby zostać rozwinięta.

Przykład

// 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/*');

Wróć do Właściwości