Questa è una vecchia versione del documento!
giovedì 16 giugno 2016
MQTT
https://en.wikipedia.org/wiki/MQTT
- message broker (=“server”)
- sottoscrivo l'accesso a una risorsa (canale dati) : autenticazione e permessi (accesso a una sola parte del canale)
- se cade il mezzo (TCP/IP) rimane comunque attiva la sessione mqtt in modo da essere recuperata esattamente da dove ero rimasto senza dovermi riauth o altro… se invece voglio chiudere mi desottoscrivo (questo comportamento e' comunque deciso dal message broker)
- tutte le comunicazioni sono tra client e messagebroker ; due client non possono parlare tra loro
- metodi: connessione, sconnessione, sottoscrizione, desottoscrizione, pubblicazione
- non c'è una richiesta-risposta , c'è solo il messaggio pubblicato
- open source (royalties??)
- queues lato broker
- codifica UTF-8 per il testo
–domanda: sono obbligato ad attendere l'ack prima di mandare un nuovo messaggio ???
pacchetto di controllo +fixed header +variable header (opzionale) +payload (opzionale)
header fisso nell'header c'è il comando (metodo visto sopra) e ci sono dei flag, segue la lunghezza della parte seguente di pacchetto (da 1 a 4 byte). alcuni comandi no flag, ma publish ad es ha un paio di bit di QoS.
header variabile puo' contenere un identificatore di pacchetto (tutti tranne connect/connack/ping/pingack/disconn) il quale e' univoco nell'insieme di ciascuna entita' (quindi server e client potrebbero scambiarsi pacch. con stessi id) (puo' contenere altre cose, come altri flag…)
payload puo' essere obbligatorio, opzionale o vietato
CONNECT
flags byte: flag di clean session, per fanculizzare o recuperare la sessione precedente will flag: ?