Stai chiedendo informazioni sul protocollo o sul formato del messaggio ? Spesso usiamo erroneamente il termine protocollo quando intendiamo il formato dei dati. Lo faccio da solo, spesso perché la distinzione non è chiara a tutti.
I protocolli di messaggistica utilizzati in IoT tendono ad essere abbastanza compatti, almeno più di http e offrono funzionalità significative che sono importanti nella messaggistica (sessioni, controllo del flusso, affidabilità, ecc.). Il formato del messaggio è il dato dei dati nel messaggio che viene inviato. Presumo che questo sia ciò che stai chiedendo.
Il formato del messaggio più compatto è un formato binario arrotolato a mano attentamente considerato. Viene spesso utilizzato in scenari con larghezza di banda ridotta quando si desidera inviare alcuni byte e conoscere esattamente l'aspetto di tali byte. Per messaggi più grandi gli svantaggi sono significativi e, in generale, dovrebbero essere evitati a tutti i costi.
Ho passato una valutazione dettagliata su molte diverse opzioni di serializzazione dei dati. Mi aspettavo che protobuf, messagepack fosse abbastanza compatto, come loro. Tuttavia, il mio secondo problema era trovare librerie che erano mantenute e disponibili su diverse piattaforme, tra cui C sul dispositivo.
Il formato su cui ho optato, sorprendentemente, era JSON compresso con gzip. È facile da implementare e comprendere, funziona ovunque e, con i dati che stavo usando, era più o meno lo stesso di altri metodi.
Inoltre, tieni presente che se disponi di un canale sicuro come TLS, consumerai comunque una parte di dati (> 6 KB) in handshake TLS.
Alcuni anni fa, mi aspettavo un formato come i buffer di protocollo, ma non è successo molto. Probabilmente a causa della facilità con cui json può essere scritto e analizzato (e compresso). Mi piace l'aspetto dei Flatbuffer , ma il vantaggio è più sulla velocità di analisi che sulla compattezza.
Dato che sei in fase di indagine, ti suggerisco di scrivere un po 'di codice su ciascuno, usando i dati tipici della tua situazione, e fare dei confronti. Avere dati concreti all'avvio aiuta a confermare le tue scelte.