Klient MQTT dla Delphi — Łącz z dowolnym brokerem MQTT 3.1 / 5.0
Natywny komponent klienta MQTT 3.1.1 i MQTT 5.0 dla Delphi i C++Builder. Publikuj, subskrybuj, retained messages, last will, QoS 0/1/2, TLS, shared subscriptions i pełna powierzchnia właściwości MQTT 5 — zweryfikowane wobec HiveMQ, Mosquitto, EMQX, AWS IoT Core i Azure IoT Hub.
MQTT to faktyczny protokół komunikatów dla IoT, telemetrii, mobilnego push i pojazdów połączonych. Wprowadź go do swojej bazy kodu Delphi bez pisania ani bajtu ramkowania.
Klient MQTT dla Delphi pozwala Twojej aplikacji VCL lub FMX mówić protokołem OASIS MQTT — lekkim protokołem publish/subscribe zaprojektowanym dla ograniczonych urządzeń i sieci o niskiej przepustowości i wysokiej latencji. Z sgcWebSockets dostajesz kompletną powierzchnię klienta jako pojedynczy niewizualny komponent, TsgcWSPClient_MQTT, który działa na Delphi 7 do Delphi 13 i na każdej platformie docelowej Embarcadero (Win32, Win64, Linux64, macOS, iOS, Android).
Komponent implementuje obie główne wersje MQTT w tej samej ścieżce kodu: długo wdrażane MQTT 3.1.1 (standard OASIS, używany przez praktycznie każdy broker IoT od 2014 roku) i nowoczesne MQTT 5.0 (z topic aliases, session expiry, user properties, enhanced authentication, request/response i shared subscriptions). Pojedyncza właściwość — Version — przełącza między nimi.
Klasa komponentu
TsgcWSPClient_MQTT
Transporty
Natywne TCP (1883 / 8883), WebSocket (80 / 443), TLS przez OpenSSL lub SChannel
Wersje
MQTT 3.1.1 i MQTT 5.0
Platformy
Windows, macOS, Linux, iOS, Android, .NET
Brokery
Działa z każdym brokerem MQTT, wobec którego testujemy
Zgodny ze specyfikacją klient jest w zasadzie agnostyczny wobec brokera — ale rzeczywiste brokery mają dziwactwa. Testujemy każde wydanie wobec brokerów, które nasi klienci faktycznie wdrażają.
HiveMQ i HiveMQ Cloud
Pełna powierzchnia właściwości MQTT 5, shared subscriptions, enhanced auth i HiveMQ Cluster. Darmowy poziom Cloud to najłatwiejszy sposób, by spróbować komponentu end-to-end.
Eclipse Mosquitto
Referencyjny broker open-source. Uruchom go lokalnie z docker run -p 1883:1883 eclipse-mosquitto i masz cel deweloperski w 30 sekund.
EMQX
Masowo skalowalny broker Erlang z silnikiem reguł, mostami Kafka i shared subscriptions. Gotowy do produkcji przy milionach połączeń.
AWS IoT Core
Certyfikaty klienta X.509, ALPN-negocjowane MQTT na 443, SigV4-podpisany WebSocket i kwoty brokera AWS IoT. Zobacz dedykowaną stronę AWS IoT Core.
Azure IoT Hub
Tokeny SAS urządzeń, tematy twin / direct-method, provisioning DPS. Zobacz dedykowaną stronę Azure IoT Hub.
Google Cloud IoT
Uwierzytelnianie urządzeń oparte na JWT na porcie 8883. Komponent automatycznie generuje i rotuje JWT.
RabbitMQ Web-MQTT
Plugin RabbitMQ Web-MQTT na porcie 15675 — ten sam broker dla przeglądarek i klientów Delphi przez pojedynczy port TLS.
VerneMQ, ActiveMQ, Artemis
Wszystkie przechodzą pakiet testów integracyjnych. Wielo-protokołowe współistnienie z AMQP / STOMP / JMS za darmo.
Funkcje
QoS, retained, will, TLS — pełna powierzchnia
Każda funkcja MQTT na poziomie protokołu jest udostępniona jako właściwość, metoda lub zdarzenie — nic zakopanego.
Quality of Service 0/1/2
Fire-and-forget (QoS 0), at-least-once z PUBACK (QoS 1) i exactly-once z czterodrożnym handshake PUBREC → PUBREL → PUBCOMP (QoS 2). Wybierz per wywołanie Publish().
Retained messages
Oznacz publikację jako retained, by broker dostarczył ostatnią znaną wartość każdemu przyszłemu subskrybentowi — standardowy wzorzec dla tematów „bieżący stan”.
Last Will i Testament
LastWillTestament rejestruje topic + ładunek, który broker publikuje, jeśli klient niegracefulnie się rozłączy — kanoniczny sygnał urządzenie-offline.
Sesje clean / persistent
Subskrypcje i niedostarczone wiadomości QoS 1/2 utrzymują się przez ponowne łączenia, gdy CleanSession jest false — mostkuj sporadyczne połączenia bez utraty danych.
TLS i mTLS
MQTTS na 8883 z OpenSSL lub SChannel. Ładuj certyfikaty z dysku, Windows certificate store, pakietów PKCS#12 lub tokenów sprzętowych.
Transport WebSocket
Podłącz komponent do TsgcWebSocketClient, by uruchomić MQTT nad WSS na porcie 443 — przejdź przez dowolny load balancer świadomy HTTP lub firmowe proxy.
Właściwości MQTT 5
Session expiry, receive maximum, maximum packet size, topic alias maximum, user properties, response info — na każdym CONNECT / PUBLISH / SUBSCRIBE / DISCONNECT.
Shared subscriptions
$share/<group>/<topic> round-robinuje przychodzące wiadomości po puli pracowników — skalowanie poziome za darmo.
Ponowne łączenie WatchDog
Automatyczne ponowne łączenie z wykładniczym backoff; subskrypcje i kolejkowane publikacje QoS 1/2 są odtwarzane przy wznowieniu.
Szybki start
Od zera do pętli publish/subscribe
Upuść komponent, podepnij dwa zdarzenia, ustaw Active.
Wszystkie cztery wzorce uwierzytelniania brokera są wspierane od razu po instalacji: prosta nazwa użytkownika/hasło (wysłane wewnątrz pakietu CONNECT), certyfikaty klienta X.509 (mTLS), JWT (Google Cloud IoT, niestandardowe brokery) i tokeny SAS (Azure IoT Hub). Enhanced authentication MQTT 5 udostępnia pakiet AUTH przez OnMQTTAuth dla przepływów challenge/response w stylu SCRAM.
Dla transportu możesz uruchomić natywne MQTT-over-TCP na standardowych portach 1883 (clear) lub 8883 (TLS), lub tunelować MQTT przez WebSocket (właściwość Client akceptuje dowolny TsgcWebSocketClient), aby przejść przez ścisłe firewalle tylko-HTTP i krawędzie CDN. Obie opcje używają tego samego komponentu i tych samych zdarzeń.