MQTT-protocol
Native MQTT 3.1.1- en MQTT 5.0-client voor Delphi, C++Builder en .NET. Publish-subscribe-berichten over WebSocket of raw TCP met QoS 0/1/2, behouden berichten, last will, topic-aliassen en gedeelde abonnementen.
Native MQTT 3.1.1- en MQTT 5.0-client voor Delphi, C++Builder en .NET. Publish-subscribe-berichten over WebSocket of raw TCP met QoS 0/1/2, behouden berichten, last will, topic-aliassen en gedeelde abonnementen.
Een eersteklas MQTT-implementatie die overal draait waar de Delphi-/.NET-runtime draait — van desktopservices tot mobiele apparaten, communicerend met elke spec-conforme MQTT-broker.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Elke wire-level-functie van MQTT — niet alleen publish en subscribe.
Fire-and-forget, at-least-once en exactly-once aflevering. De QoS 2 four-way handshake (PUBLISH → PUBREC → PUBREL → PUBCOMP) is volledig blootgesteld via events voor retry-/auditlogica.
Koppel de Client-eigenschap aan een TsgcWebSocketClient om MQTT over WebSockets te draaien, of gebruik het native MQTT-TCP-transport op poort 1883 / 8883 — hetzelfde component, dezelfde API.
Markeer publicaties als retained zodat de broker de laatst bekende waarde aan elke toekomstige abonnee aflevert. Stel retain per aanroep in of wis het op Publish.
LastWillTestament registreert een topic + payload die de broker publiceert als de client onverwacht wegvalt — de canonieke manier om device-offline-events te signaleren.
Topic-filters met wildcards + (enkel niveau) en # (meerdere niveaus): sensors/+/temperature of devices/#.
Session expiry, receive maximum, maximum packet size, topic alias maximum, request response info, user properties — allemaal toegankelijk via ConnectProperties, PublishProperties en SubscribeProperties.
MQTT 5 laat de client (en broker) lange topic-namen vervangen door een 2-byte-integer-alias voor herhaalde publicaties — enorme besparingen voor drukke telemetriestromen.
MQTT 5 $share/<group>/<topic> verdeelt inkomende berichten round-robin over een groep abonnees — de bouwsteen voor horizontale worker-pools.
De MQTT 5-eigenschappen ResponseTopic en CorrelationData maken van pub-sub een asynchrone RPC — ingebouwd in de events zonder extra framing.
MQTT 5 AUTH-packet met AuthenticationMethod / AuthenticationData voor SCRAM-achtige challenges — roep Auth aan, verwerk OnMQTTAuth.
HeartBeat verzendt PINGREQ op een instelbaar interval. De WatchDog herstelt automatisch verbinding met exponentiële backoff en hervat abonnementen.
Draai MQTTS op 8883 (raw TCP+TLS) of WSS op 443 met clientcertificaten. TLSOptions.IOHandler kiest OpenSSL (cross-platform) of SChannel (Windows kernel TLS).
Lichte framing, lage overhead en stateful sessies maken MQTT de standaardkeuze voor deze scenario's.
Sensoren streamen temperatuur, trillingen, GPS- en accumetingen over keep-alived MQTT-sessies — zelfs op onbetrouwbare LTE-/Cat-M-/NB-IoT-verbindingen.
Bidirectioneel commandokanaal met QoS 1 voor vlootvolgers, OBD-gateways en EV-laadstations — opnieuw verbinden en hervatten zonder publicaties te verliezen.
Vervang OPC-UA-polling door event-gedreven publish-subscribe. Topic-aliassen en gedeelde abonnementen schalen naar duizenden PLC's en veldapparaten.
Verlichting, HVAC, sloten en aanwezigheidssensoren die communiceren via Mosquitto of Home Assistant — de Delphi-client integreert net zo eenvoudig als elk embedded knooppunt.
Hetzelfde component communiceert met AWS IoT Core, Azure IoT Hub, Google Cloud IoT, IBM Watson, HiveMQ Cloud en EMQX — met X.509-clientcertificaten of SAS-tokens.
MQTT-over-WebSocket op RabbitMQ Web-MQTT (poort 15675) laat dezelfde broker pushen naar Delphi-clients en JS-dashboards over één TLS-poort.
Langlopende MQTT-sessies op iOS/Android met Last Will geven u aanwezigheid en lichtgewicht push zonder leverancierspecifieke provider.
Ontkoppel producenten en consumenten via een centrale broker. Gedeelde abonnementen verdelen werk round-robin over een pool van Delphi-workerservices.
Spec-conforme client — geverifieerd tegen de brokers die onze klanten daadwerkelijk uitrollen.
X.509-clientcertificaten, SigV4 over WebSocket en de AWS IoT-brokerquota's. Zie de speciale AWS IoT-pagina.
Device-SAS-tokens, twin-/method-topics en DPS-provisioning. Zie de Azure IoT Hub-pagina.
Volledig MQTT 5-eigenschappenoppervlak, gedeelde abonnementen, enhanced auth en HiveMQ Cluster.
De referentie-open-source-broker — zowel MQTT 3.1.1 als 5.0, over TCP of WebSocket.
Enorm schaalbare broker met gedeelde abonnementen, rule engine en bridge naar Kafka. Drop-in.
MQTT-over-WebSocket-plugin op poort 15675 — de standaardcombinatie voor browser- + Delphi-dashboards.
Geclusterde MQTT-broker gebouwd op Erlang/OTP — zowel MQTT 3.1.1- als 5.0-modi doorstaan de testsuite.
Apache ActiveMQ’s ingebouwde MQTT-listener en de Artemis-broker — multi-protocol-coexistentie met AMQP, STOMP en JMS.
Koppel een TsgcWebSocketClient aan TsgcWSPClient_MQTT, wire OnMQTTConnect / OnMQTTPublish, en voer vervolgens Subscribe en Publish uit.
uses
sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client,
sgcWebSocket_Protocol_MQTT_Message;
var
WSClient: TsgcWebSocketClient;
MQTT: TsgcWSPClient_MQTT;
begin
WSClient := TsgcWebSocketClient.Create(nil);
WSClient.Host := 'www.esegece.com';
WSClient.Port := 15675;
MQTT := TsgcWSPClient_MQTT.Create(nil);
MQTT.Client := WSClient;
MQTT.Authentication.Enabled := True;
MQTT.Authentication.UserName := 'sgc';
MQTT.Authentication.Password := 'sgc';
MQTT.OnMQTTConnect := MQTTConnect;
MQTT.OnMQTTPublish := MQTTPublish;
WSClient.Active := True;
end;
procedure TForm1.MQTTConnect(Connection: TsgcWSConnection;
const Session: Boolean; const ReasonCode: Integer;
const ReasonName: string;
const ConnectProperties: TsgcWSMQTTCONNACKProperties);
begin
MQTT.Subscribe('sensors/temperature/#');
end;
procedure TForm1.MQTTPublish(Connection: TsgcWSConnection;
aTopic, aText: string;
PublishProperties: TsgcWSMQTTPublishProperties);
begin
Memo1.Lines.Add(aTopic + ': ' + aText);
end;
// Publiceer een behouden QoS 1-bericht
MQTT.Publish('sensors/temperature/room1',
'{"value":22.5,"unit":"C"}', mtqsAtLeastOnce, True);
// uses: sgcWebSocket, sgcWebSocket_Protocol_MQTT_Client
TsgcWebSocketClient *WSClient = new TsgcWebSocketClient(this);
WSClient->Host = "www.esegece.com";
WSClient->Port = 15675;
TsgcWSPClient_MQTT *MQTT = new TsgcWSPClient_MQTT(this);
MQTT->Client = WSClient;
MQTT->Authentication->Enabled = true;
MQTT->Authentication->UserName = "sgc";
MQTT->Authentication->Password = "sgc";
MQTT->OnMQTTConnect = MQTTConnect;
MQTT->OnMQTTPublish = MQTTPublish;
WSClient->Active = true;
void __fastcall TForm1::MQTTPublish(TsgcWSConnection *Connection,
UnicodeString aTopic, UnicodeString aText,
TsgcWSMQTTPublishProperties PublishProperties)
{
Memo1->Lines->Add(aTopic + ": " + aText);
}
MQTT->Publish("sensors/temperature/room1",
"{\"value\":22.5,\"unit\":\"C\"}", mtqsAtLeastOnce, true);
using esegece.sgcWebSockets;
var WSClient = new TsgcWebSocketClient();
WSClient.Options.Parameters = "/ws";
var MQTT = new TsgcWSPClient_MQTT();
MQTT.Client = WSClient;
MQTT.Authentication.Enabled = true;
MQTT.Authentication.UserName = "sgc";
MQTT.Authentication.Password = "sgc";
MQTT.HeartBeat.Enabled = true;
MQTT.HeartBeat.Interval = 5;
MQTT.OnMQTTConnect += (conn, session, code, name, props) => MQTT.Subscribe("sensors/temperature/#");
MQTT.OnMQTTPublish += (conn, topic, text, props) => Console.WriteLine(topic + ": " + text);
WSClient.Host = "www.esegece.com";
WSClient.Port = 15675;
WSClient.Active = true;
MQTT.Publish("sensors/temperature/room1",
"{\"value\":22.5,\"unit\":\"C\"}", TmqttQoS.mtqsAtLeastOnce, true);
Gezaghebbende bronnen voor de protocollen die dit component implementeert.
Deep-link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.
| Online-help — Protocol_MQTT Volledige eigenschap-, methode- en eventreferentie voor dit component. | Openen | |
| Demoproject — Demos\Protocols\MQTT Kant-en-klaar voorbeeldproject. Wordt meegeleverd met het sgcWebSockets-pakket — download hieronder de proefversie. | Openen | |
| Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi, C++ Builder en .NET en primaire-bronreferenties — uitsluitend dit component. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt. | Openen |