Client MQTT Delphi — Se connecter à n'importe quel broker MQTT 3.1 / 5.0
Un composant client MQTT 3.1.1 et MQTT 5.0 natif pour Delphi et C++Builder. Publish, subscribe, messages retained, last will, QoS 0/1/2, TLS, abonnements partagés et toute la surface des propriétés MQTT 5 — vérifié contre HiveMQ, Mosquitto, EMQX, AWS IoT Core et Azure IoT Hub.
MQTT est le protocole de messagerie de facto pour l'IoT, la télémétrie, le push mobile et les véhicules connectés. Apportez-le à votre base de code Delphi sans écrire un seul octet de framing.
Un client MQTT Delphi permet à votre application VCL ou FMX de parler le protocole OASIS MQTT — le protocole publish/subscribe léger conçu pour les appareils contraints et les réseaux à faible bande passante et forte latence. Avec sgcWebSockets, vous obtenez la surface client complète sous forme d'un seul composant non-visuel, TsgcWSPClient_MQTT, qui tourne de Delphi 7 à Delphi 13 et sur chaque plateforme cible Embarcadero (Win32, Win64, Linux64, macOS, iOS, Android).
Le composant implémente les deux versions majeures de MQTT dans le même chemin de code : le MQTT 3.1.1 déployé depuis longtemps (standard OASIS, utilisé par pratiquement tous les brokers IoT depuis 2014) et le MQTT 5.0 moderne (avec alias de topics, expiration de session, propriétés utilisateur, authentification améliorée, request/response et abonnements partagés). Une seule propriété — Version — bascule entre les deux.
Classe de composant
TsgcWSPClient_MQTT
Transports
TCP natif (1883 / 8883), WebSocket (80 / 443), TLS via OpenSSL ou SChannel
Versions
MQTT 3.1.1 et MQTT 5.0
Plateformes
Windows, macOS, Linux, iOS, Android, .NET
Brokers
Fonctionne avec chaque broker MQTT contre lequel nous testons
Un client conforme à la spec est, en principe, agnostique au broker — mais les brokers du monde réel ont des bizarreries. Nous testons chaque release contre les brokers que nos clients déploient réellement.
HiveMQ et HiveMQ Cloud
Surface complète des propriétés MQTT 5, abonnements partagés, auth améliorée et HiveMQ Cluster. Le tier Cloud gratuit est le moyen le plus facile d'essayer le composant de bout en bout.
Eclipse Mosquitto
Le broker open-source de référence. Faites-le tourner localement avec docker run -p 1883:1883 eclipse-mosquitto et vous avez une cible de développement en 30 secondes.
EMQX
Broker Erlang massivement scalable avec moteur de règles, bridges Kafka et abonnements partagés. Prêt pour la production à des millions de connexions.
AWS IoT Core
Certificats clients X.509, MQTT négocié par ALPN sur 443, WebSocket signé SigV4 et les quotas du broker AWS IoT. Voir la page dédiée AWS IoT Core.
Azure IoT Hub
Tokens SAS d'appareil, topics twin / direct-method, provisionnement DPS. Voir la page dédiée Azure IoT Hub.
Google Cloud IoT
Auth d'appareil basée sur JWT sur le port 8883. Le composant génère et fait tourner le JWT automatiquement.
RabbitMQ Web-MQTT
Le plugin Web-MQTT de RabbitMQ sur le port 15675 — même broker pour navigateurs et clients Delphi sur un seul port TLS.
VerneMQ, ActiveMQ, Artemis
Tous passent la suite de tests d'intégration. Coexistence multi-protocoles avec AMQP / STOMP / JMS gratuitement.
Fonctionnalités
QoS, retained, will, TLS — toute la surface
Chaque fonctionnalité MQTT au niveau du fil est exposée comme propriété, méthode ou événement — rien d'enterré.
Quality of Service 0/1/2
Fire-and-forget (QoS 0), at-least-once avec PUBACK (QoS 1) et exactly-once avec le handshake quatre voies PUBREC → PUBREL → PUBCOMP (QoS 2). Choisissez par appel Publish().
Messages retained
Marquez une publication comme retained pour que le broker délivre la dernière valeur connue à tout futur abonné — le pattern standard pour les topics « état courant ».
Last Will & Testament
LastWillTestament enregistre un topic + payload que le broker publie si le client se déconnecte sans grâce — le signal canonique d'appareil hors-ligne.
Sessions clean / persistantes
Les abonnements et les messages QoS 1/2 non délivrés persistent à travers les reconnexions quand CleanSession est false — faites le pont avec une connectivité intermittente sans perdre de données.
TLS et mTLS
MQTTS sur 8883 avec OpenSSL ou SChannel. Chargez des certificats depuis le disque, le magasin de certificats Windows, des bundles PKCS#12 ou des tokens matériels.
Transport WebSocket
Branchez le composant dans un TsgcWebSocketClient pour faire tourner MQTT sur WSS sur le port 443 — passez à travers n'importe quel load balancer ou proxy d'entreprise HTTP-aware.
Propriétés MQTT 5
Expiration de session, receive maximum, taille maximale de paquet, topic alias maximum, propriétés utilisateur, response info — sur chaque CONNECT / PUBLISH / SUBSCRIBE / DISCONNECT.
Abonnements partagés
$share/<group>/<topic> round-robine les messages entrants sur un pool de workers — passage à l'échelle horizontal gratuit.
Reconnexion WatchDog
Reconnexion automatique avec backoff exponentiel ; les abonnements et publications QoS 1/2 en file sont rejoués à la reprise.
Démarrage rapide
De zéro à une boucle publish/subscribe
Déposez le composant, branchez deux événements, définissez Active.
Les quatre patterns d'authentification de broker sont supportés d'office : simple username/password (envoyé à l'intérieur du paquet CONNECT), certificats clients X.509 (mTLS), JWT (Google Cloud IoT, brokers personnalisés) et tokens SAS (Azure IoT Hub). L'authentification améliorée MQTT 5 expose le paquet AUTH via OnMQTTAuth pour les flux challenge/response style SCRAM.
Pour le transport, vous pouvez faire tourner MQTT-sur-TCP natif sur les ports standards 1883 (clair) ou 8883 (TLS), ou tunnelliser MQTT à travers un WebSocket (la propriété Client accepte tout TsgcWebSocketClient) pour traverser les firewalls HTTP-seulement stricts et les edges CDN. Les deux options utilisent le même composant et les mêmes événements.