MQTT is een client-servergebaseerd message publish/subscribe transportprotocol. Het MQTT protocol is licht, eenvoudig, open en gemakkelijk te implementeren. Deze eigenschappen maken het toepasbaar voor een breed scala aan toepassingen. In veel gevallen, ook in beperkte omgevingen zoals machine-to-machine (M2M) communicatie en het Internet of Things (IoT). Het wordt veel gebruikt in communicatiesensoren via satellietverbindingen, medische apparatuur om af en toe te bellen, slimme huizen en sommige geminiaturiseerde apparaten.


MQTT-functies
Het MQTT-protocol is een protocol dat is ontworpen voor communicatie met een groot aantal sensoren en besturingsapparaten op afstand met beperkte rekenkracht en die werken op netwerken met lage bandbreedte en onbetrouwbaarheid. Het heeft de volgende hoofdkenmerken:
1. Gebruik het publish/subscribe-berichtenmodel om één-op-veel berichten te publiceren en applicaties te ontkoppelen: Dit lijkt erg op XMPP, maar de informatieredundantie van MQTT is veel minder dan die van XMPP (omdat XMPP het XML-formaat gebruikt om gegevens te verzenden, weet je).
2. Berichttransmissie met afgeschermde payloadinhoud.
3. Gebruik TCP/IP voor netwerkverbindingen: De mainstream MQTT is gebaseerd op TCP-verbindingen voor het pushen van gegevens, maar er is ook een op UDP gebaseerde versie genaamd MQTT-SN. Omdat deze twee versies gebaseerd zijn op verschillende verbindingsmethoden, hebben ze natuurlijk verschillende voor- en nadelen.
4. Er zijn drie soorten servicekwaliteit voor het publiceren van berichten:
[0] "At most once", het publiceren van berichten is volledig afhankelijk van het onderliggende TCP/IP netwerk. Berichtverlies of duplicatie zal optreden: Dit niveau kan worden gebruikt in situaties zoals omgevingssensorgegevens, waarbij het verliezen van een gelezen record niet uitmaakt omdat er binnenkort een tweede zal worden verzonden. Deze methode wordt voornamelijk gebruikt voor gewone APP-push. Als uw slimme apparaat niet verbonden is met het internet wanneer het bericht wordt gepusht, en de push in het verleden niet werd ontvangen, zal het niet worden ontvangen als het opnieuw met het internet wordt verbonden.
[1] "Ten minste één keer" zorgt ervoor dat het bericht aankomt, maar er kunnen dubbele berichten voorkomen: Deze methode is relatief nutteloos. In mijn verbeelding heb ik niet gedacht aan het gebruik van deze kwaliteit van verzenden in reguliere APP ontwikkeling.
[2] "Slechts eenmaal", zodat het bericht slechts eenmaal aankomt: Dit niveau kan worden gebruikt in situaties waar duplicatie of verlies van berichten kan leiden tot onjuiste resultaten in een factureringssysteem. Deze service voor het publiceren van berichten van de hoogste kwaliteit kan ook worden gebruikt voor pushmeldingen op instant messaging apps, zodat gebruikers het bericht slechts eenmaal ontvangen.
5. Kleine transmissie, lage overhead (header met vaste lengte is 2 bytes), protocoluitwisseling wordt geminimaliseerd om netwerkverkeer te verminderen: Daarom wordt in de inleiding gezegd dat het zeer geschikt is voor "op het gebied van Internet of Things, de verbinding tussen sensoren en servers" "Communicatie, verzameling van informatie", je moet weten dat de rekenkracht en bandbreedte van embedded apparaten relatief zwak zijn, dus het gebruik van dit protocol om berichten te verzenden is perfect.
6. Gebruik de functies LastWill en Testament om relevante partijen op de hoogte te stellen van het mechanisme voor abnormale klantonderbrekingen: Last Will: Het mechanisme voor laatste woorden wordt gebruikt om andere apparaten onder hetzelfde onderwerp op de hoogte te stellen dat het apparaat dat de laatste woorden verzendt, de verbinding heeft verbroken. Testament: Testamentmechanisme, vergelijkbaar in functie met Last Will.
MQTT-protocolprincipe
1. Implementatiemethode MQTT-protocol


Het MQTT protocol implementeren vereist: client en server
Er zijn drie identiteiten in het MQTT-protocol: uitgever (Publish), makelaar (Broker) (server) en abonnee (Subscribe). De message publisher en subscriber zijn beide clients, de message agent is de server en de message publisher kan tegelijkertijd een subscriber zijn.
De berichten die door MQTT worden verzonden, bestaan uit twee delen: topic (onderwerp) en payload (nuttige lading). Topic kan worden begrepen als het type bericht. Nadat de abonnee zich abonneert (Subscribe), ontvangt hij de berichtinhoud (payload) van het topic.
De payload kan worden opgevat als de inhoud van het bericht, die verwijst naar de specifieke inhoud die de abonnee wil gebruiken.
2. Netwerktransmissie en toepassingsberichten
MQTT bouwt het onderliggende netwerktransport: het zet een verbinding op van de client naar de server, die een geordende, verliesloze, op bytestreams gebaseerde tweerichtingsoverdracht biedt tussen de twee.
Wanneer applicatiegegevens via het MQTT-netwerk worden verzonden, zal MQTT de gerelateerde servicekwaliteit (QoS) en topicnaam (Topic) associëren.