Vous demandez le protocole ou le format du message ? Nous utilisons souvent à tort le terme protocole lorsque nous entendons le format des données. Je le fais moi-même, souvent parce que la distinction n'est pas claire pour tout le monde.
Les protocoles de messagerie utilisés dans l'IoT ont tendance à être assez compacts, au moins plus qu'à http et offrent des fonctionnalités importantes qui sont importantes dans la messagerie (sessions, contrôle de flux, fiabilité, etc.). Le format du message est celui des données du message qui sont envoyées. Je suppose que c'est ce que vous demandez.
Le format de message le plus compact est un format binaire soigneusement étudié. Il est fréquemment utilisé dans les scénarios à faible bande passante lorsque vous souhaitez envoyer quelques octets et savoir exactement à quoi ressemblent ces octets. Pour les messages plus volumineux, les inconvénients sont importants et doivent en général être évités à tout prix.
J'ai effectué une évaluation détaillée de nombreuses options de sérialisation de données différentes. Je m'attendais à ce que protobuf, messagepack soit assez compact, ce qu'ils étaient. Cependant, mon deuxième problème était de trouver des bibliothèques qui étaient maintenues et disponibles sur un certain nombre de plates-formes différentes, y compris C sur l'appareil.
Étonnamment, le format sur lequel j'ai opté était JSON compressé par gzip. Il est facile à mettre en œuvre et à comprendre, s'exécute partout et, avec les données que j'utilisais, était à peu près le même, ou plus petit, que les autres méthodes.
Sachez également que si vous disposez d'un canal sécurisé tel que TLS, vous allez quand même consommer un bloc de données (> 6 Ko) dans les poignées de main TLS.
Il y a quelques années, je m'attendais à ce qu'un format comme les tampons de protocole domine, mais il ne s'est pas vraiment passé grand-chose. Probablement à cause de la facilité avec laquelle json peut être écrit et analysé (et compressé). J'aime le look des Flatbuffers , mais l'avantage est plus sur la vitesse d'analyse que sur la compacité.
Puisque vous êtes au stade de l'enquête, je vous suggère d'écrire un peu de code sur chacun, en utilisant des données typiques de votre situation, et de faire des comparaisons. Le fait de disposer de données fiables au démarrage permet de confirmer vos choix.