Un client MQTT può iscriversi a un argomento creato da solo?


18

A mio avviso, in MQTT viene creato un argomento una volta che un client pubblica qualcosa con il nome dell'argomento corrispondente.

Non è necessario configurare un argomento, pubblicare su di esso è sufficiente.

Da qui .

È possibile per un cliente abbonarsi al proprio argomento, dopo che è stato pubblicato, creato? Non sono riuscito a trovare alcuna restrizione nelle specifiche . Non è elencato come possibile comportamento anomalo né:

5.4.8 Rilevamento di comportamenti anomali

Le implementazioni del server potrebbero monitorare il comportamento del client per rilevare potenziali incidenti di sicurezza. Per esempio:

  • Tentativi di connessione ripetuti
  • Tentativi di autenticazione ripetuti
  • Interruzione anomala delle connessioni
  • Scansione argomento (tenta di inviare o iscriversi a molti argomenti)
  • Invio di messaggi non consegnabili (nessun abbonato agli argomenti)
  • Client che si connettono ma non inviano dati

Sulla base di questo, penso che sia certamente possibile. Quindi sono interessato a quali sono i casi d'uso di questa funzione?

Perché lo standard consente tale meccanismo, sarebbe complicato rintracciare il proprietario degli argomenti? Quindi, invece, consente semplicemente ai clienti di iscriversi al proprio argomento.

Un caso d'uso a cui riesco a pensare è che in questo modo un client può verificare i suoi dati pubblicati.

Risposte:


19

Sì, è possibile iscriversi a un argomento creato da solo.

Un client MQTT può essere sia un editore che un abbonato allo stesso tempo. In termini MQTT, un client include sia subscriberse publishers.

Sono interessato a quali sono i casi d'uso di questa funzione?

Un possibile caso d'uso (presumo) è che, supponiamo che ci siano tre client (x, y, z) iscritti a un argomento x-topiccreato da x. Ogni volta che viene pubblicato un messaggio x-topic, tutti gli iscritti a tale argomento riceveranno il messaggio. Se ypubblica un messaggio su un argomento x-topic(presumo che possa essere fatto), se xnon si abbona a quell'argomento anche se ha creato l'argomento, non riceverà i messaggi.

Quindi un cliente deve essere abbonato a un argomento per ricevere messaggi anche se questo è il creatore originale di quell'argomento.

Ma il meccanismo può essere controllato usando i broker come mezzo.


Sì, questa opzione mi è venuta in mente. Solo, non ero sicuro che un nuovo cliente potesse pubblicare su un argomento esistente, già utilizzato da altri editori.
Bence Kaulics,

Sì, un nuovo client può pubblicare su un argomento esistente. Ricorda che i clienti non comunicano direttamente, ogni pubblicazione e abbonamento avviene tramite un broker.
bravokeyl,

0

Sì.

I client MQTT sono connessi a un broker che può essere un cloud o un altro dispositivo.

Non esiste una cosa come la creazione di un argomento. Sono usati come intestazione per un messaggio. Quindi, se il tuo cliente ha sottoscritto un argomento e se pubblica qualcosa su quell'argomento, il messaggio verrà nuovamente ricevuto dal broker al cliente.

Esempi di buoni broker sono Mosquitto per l'esecuzione su dispositivi e CloudMqtt per broker basati su cloud


4
Questo in realtà non espande il corpus di conoscenze oltre a quello che l'altra risposta aveva già fornito un anno fa. Sei libero di aggiungere nuove risposte anche alle domande con risposta. Tuttavia, tali risposte dovrebbero offrire approfondimenti aggiuntivi o aggiornati sulla domanda o sulla soluzione.
Helmar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.