TsgcWSPClient_MQTT | Tematy MQTT

Tematy

W MQTT słowo „temat" (topic) odnosi się do ciągu UTF-8, którego broker używa do filtrowania wiadomości dla każdego podłączonego klienta. Temat składa się z jednego lub więcej poziomów tematu. Każdy poziom tematu jest oddzielony ukośnikiem (separatorem poziomów tematu).

 

myHome / groundfloor / livingroom / temperature

 

W porównaniu z kolejką wiadomości, tematy MQTT są bardzo lekkie. Klient nie musi tworzyć żądanego tematu przed opublikowaniem lub zasubskrybowaniem go. Broker akceptuje każdy prawidłowy temat bez żadnej wcześniejszej inicjalizacji. Należy pamiętać, że każdy temat musi zawierać co najmniej 1 znak i że ciąg tematu dopuszcza spacje. Tematy uwzględniają wielkość liter.

 

 

Symbole wieloznaczne

Gdy klient subskrybuje temat, może subskrybować dokładny temat opublikowanej wiadomości lub użyć symboli wieloznacznych do jednoczesnej subskrypcji wielu tematów. Symbol wieloznaczny może być używany tylko do subskrypcji tematów, a nie do publikowania wiadomości. Istnieją dwa rodzaje symboli wieloznacznych: _jednopoziomowy i _wielopoziomowy.

 

Jeden poziom: +

Jak sama nazwa wskazuje, symbol wieloznaczny pojedynczego poziomu zastępuje jeden poziom tematu. Symbol plus reprezentuje symbol wieloznaczny pojedynczego poziomu w temacie.

 

myHome / groundfloor / + / temperature

 

Każdy temat pasuje do tematu z jednopoziomowym symbolem wieloznacznym, jeśli zawiera dowolny ciąg zamiast symbolu wieloznacznego. Na przykład subskrypcja _myhome/groundfloor/+/temperature może zwrócić następujące wyniki:

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

NO => myHome / groundfloor / livingroom / brightness

NIE => myHome / firstfloor / livingroom / temperature

NO => myHome / groundfloor / kitchen / fridge / temperature

 

Wielopoziomowy: #

Wielopoziomowy symbol wieloznaczny obejmuje wiele poziomów tematu. Znak krzyżyka reprezentuje wielopoziomowy symbol wieloznaczny w temacie. Aby broker mógł określić, które tematy pasują, wielopoziomowy symbol wieloznaczny musi być umieszczony jako ostatni znak tematu i poprzedzony ukośnikiem.

 

myHome / groundfloor / #

 

YES => myHome / groundfloor / livingroom / temperature

YES => myHome / groundfloor / kitchen / temperature

YES => myHome / groundfloor / kitchen / brightness

NIE => myHome / firstfloor / kitchen / temperature

 

Gdy klient subskrybuje temat z wielopoziomowym symbolem wieloznacznym, otrzymuje wszystkie wiadomości dotyczące tematu rozpoczynającego się od wzorca przed znakiem wieloznacznym, niezależnie od długości lub głębokości tematu. Jeśli jako temat określony jest jedynie wielopoziomowy symbol wieloznaczny (_#), otrzymywane są wszystkie wiadomości wysyłane do brokera MQTT.