Un componente client MQTT 3.1.1 e MQTT 5.0 nativo per Delphi e C++Builder. Publish, subscribe, messaggi retained, last will, QoS 0/1/2, TLS, sottoscrizioni condivise e tutta la superficie delle property MQTT 5 — verificato contro HiveMQ, Mosquitto, EMQX, AWS IoT Core e Azure IoT Hub.
MQTT è il protocollo di messaging de-facto per IoT, telemetria, push mobile e veicoli connessi. Portalo nella tua codebase Delphi senza scrivere un solo byte di framing.
Un client MQTT Delphi consente alla tua applicazione VCL o FMX di parlare il protocollo OASIS MQTT — il protocollo publish/subscribe leggero progettato per dispositivi vincolati e reti a banda stretta e alta latenza. Con sgcWebSockets ottieni l'intera superficie client come un singolo componente non visuale, TsgcWSPClient_MQTT, che gira da Delphi 7 a Delphi 13 e su ogni piattaforma target Embarcadero (Win32, Win64, Linux64, macOS, iOS, Android).
Il componente implementa entrambe le versioni principali di MQTT nello stesso flusso di codice: il consolidato MQTT 3.1.1 (standard OASIS, usato da praticamente ogni broker IoT dal 2014) e il moderno MQTT 5.0 (con topic alias, scadenza della sessione, user property, autenticazione avanzata, request/response e sottoscrizioni condivise). Una sola proprietà — Version — passa dall'una all'altra.
Classe del componente
TsgcWSPClient_MQTT
Trasporti
TCP nativo (1883 / 8883), WebSocket (80 / 443), TLS via OpenSSL o SChannel
Versioni
MQTT 3.1.1 e MQTT 5.0
Piattaforme
Windows, macOS, Linux, iOS, Android, .NET
Broker
Funziona con ogni broker MQTT contro cui testiamo
Un client conforme alla specifica è, in linea di principio, broker-agnostic — ma i broker reali hanno le loro stranezze. Testiamo ogni release contro i broker che i nostri clienti effettivamente deployano.
HiveMQ e HiveMQ Cloud
Intera superficie delle property MQTT 5, sottoscrizioni condivise, autenticazione avanzata e HiveMQ Cluster. Il tier Cloud gratuito è il modo più semplice per provare il componente end-to-end.
Eclipse Mosquitto
Il broker open-source di riferimento. Eseguilo in locale con docker run -p 1883:1883 eclipse-mosquitto e hai un target di sviluppo in 30 secondi.
EMQX
Broker Erlang scalabile in modo massiccio con rule engine, bridge Kafka e sottoscrizioni condivise. Pronto per la produzione su milioni di connessioni.
AWS IoT Core
Certificati client X.509, MQTT negoziato via ALPN sulla 443, WebSocket firmato SigV4 e le quote del broker AWS IoT. Vedi la pagina dedicata AWS IoT Core.
Azure IoT Hub
SAS token per device, topic twin / direct-method, provisioning DPS. Vedi la pagina dedicata Azure IoT Hub.
Google Cloud IoT
Autenticazione device basata su JWT sulla porta 8883. Il componente genera e ruota il JWT automaticamente.
RabbitMQ Web-MQTT
Il plugin Web-MQTT di RabbitMQ sulla porta 15675 — stesso broker per browser e client Delphi su una singola porta TLS.
VerneMQ, ActiveMQ, Artemis
Tutti superano la suite di test di integrazione. Coesistenza multi-protocollo con AMQP / STOMP / JMS gratis.
Funzionalità
QoS, retained, will, TLS — tutta la superficie
Ogni funzionalità MQTT a livello di protocollo è esposta come proprietà, metodo o evento — nulla è nascosto.
Quality of Service 0/1/2
Fire-and-forget (QoS 0), at-least-once con PUBACK (QoS 1) ed exactly-once con l'handshake a quattro fasi PUBREC → PUBREL → PUBCOMP (QoS 2). Scegli per ogni chiamata Publish().
Messaggi retained
Marca una pubblicazione come retained affinché il broker consegni l'ultimo valore noto a ogni futuro subscriber — il pattern standard per i topic di “stato corrente”.
Last Will & Testament
LastWillTestament registra un topic + payload che il broker pubblica se il client cade in modo non grazioso — il classico segnale di device offline.
Sessioni clean / persistenti
Sottoscrizioni e messaggi QoS 1/2 non consegnati persistono attraverso le riconnessioni quando CleanSession è false — supera la connettività intermittente senza perdere dati.
TLS e mTLS
MQTTS sulla 8883 con OpenSSL o SChannel. Carica certificati da disco, dal Windows certificate store, da bundle PKCS#12 o da token hardware.
Trasporto WebSocket
Collega il componente a un TsgcWebSocketClient per eseguire MQTT su WSS sulla porta 443 — attraversa qualunque load balancer HTTP-aware o proxy aziendale.
Property MQTT 5
Scadenza della sessione, receive maximum, dimensione massima del pacchetto, massimo numero di topic alias, user property, response info — su ogni CONNECT / PUBLISH / SUBSCRIBE / DISCONNECT.
Sottoscrizioni condivise
$share/<group>/<topic> distribuisce a round-robin i messaggi in arrivo su un pool di worker — scale-out orizzontale gratis.
Riconnessione WatchDog
Riconnessione automatica con back-off esponenziale; sottoscrizioni e pubblicazioni QoS 1/2 in coda vengono rigiocate alla ripresa.
Guida Rapida
Da zero a un loop publish/subscribe
Inserisci il componente, collega due eventi, imposta Active.
Tutti e quattro i pattern di autenticazione dei broker sono supportati out-of-the-box: username/password semplice (inviati dentro il pacchetto CONNECT), certificati client X.509 (mTLS), JWT (Google Cloud IoT, broker custom) e SAS token (Azure IoT Hub). L'autenticazione avanzata di MQTT 5 espone il pacchetto AUTH tramite OnMQTTAuth per flussi di challenge/response in stile SCRAM.
Per il trasporto, puoi eseguire MQTT-su-TCP nativo sulle porte standard 1883 (in chiaro) o 8883 (TLS), oppure tunnelizzare MQTT attraverso un WebSocket (la proprietà Client accetta qualunque TsgcWebSocketClient) per attraversare firewall HTTP-only stringenti e edge CDN. Entrambe le opzioni usano lo stesso componente e gli stessi eventi.