Secondo le specifiche , è sempre il client a stabilire una connessione a un server.
Cliente:
Un programma o dispositivo che utilizza MQTT. Un client stabilisce sempre la connessione di rete al server . Può
Pubblica messaggi applicativi che potrebbero interessare altri clienti.
Iscriviti per richiedere i messaggi applicativi che è interessato a ricevere.
Annulla l'iscrizione per rimuovere una richiesta per i messaggi dell'applicazione.
Disconnettersi dal server.
E se questo client si iscrive per un messaggio applicativo, il server dovrebbe inoltrare quei messaggi a questo particolare client.
Server:
Un programma o dispositivo che funge da intermediario tra i clienti che pubblicano messaggi applicativi e i clienti che hanno sottoscritto abbonamenti. Un server
Accetta connessioni di rete dai clienti.
Accetta i messaggi applicativi pubblicati dai clienti.
Processi Sottoscrivi e annulla l'iscrizione alle richieste dei clienti.
Inoltra i messaggi dell'applicazione che corrispondono agli abbonamenti client .
Questo significa che se un client si abbona, rimane connesso al server mentre l'abbonamento è valido anche se non ci sono flussi di dati nella maggior parte del tempo?
Vengo a questa conclusione perché se il client si disconnette dopo la sottoscrizione, un server non può inoltrare i messaggi perché è il client che deve stabilire una connessione. Ma non saprà quando ripristinarlo.