MQTT-Protokoll
Nativer MQTT-3.1.1- und MQTT-5.0-Client für Delphi, C++Builder und .NET. Publish-Subscribe-Messaging über WebSocket oder reines TCP mit QoS 0/1/2, beibehaltenen Nachrichten, Last Will, Topic-Aliasen und gemeinsamen Abonnements.
Nativer MQTT-3.1.1- und MQTT-5.0-Client für Delphi, C++Builder und .NET. Publish-Subscribe-Messaging über WebSocket oder reines TCP mit QoS 0/1/2, beibehaltenen Nachrichten, Last Will, Topic-Aliasen und gemeinsamen Abonnements.
Eine erstklassige MQTT-Implementierung, die überall dort läuft, wo die Delphi- bzw. .NET-Laufzeitumgebung läuft — von Desktop-Diensten bis zu Mobilgeräten und kommuniziert mit jedem standardkonformen MQTT-Broker.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Jedes Wire-Level-Feature von MQTT — nicht nur Publish und Subscribe.
Fire-and-Forget-, At-least-once- und Exactly-once-Zustellung. Der vierstufige QoS-2-Handshake (PUBLISH → PUBREC → PUBREL → PUBCOMP) ist vollständig über Events für Retry- bzw. Audit-Logik zugänglich.
Verbinden Sie die Eigenschaft Client mit einem TsgcWebSocketClient, um MQTT über WebSockets zu betreiben, oder nutzen Sie den nativen MQTT-TCP-Transport auf Port 1883 / 8883 — dieselbe Komponente, dieselbe API.
Markieren Sie Veröffentlichungen als beibehalten, damit der Broker den zuletzt bekannten Wert an jeden künftigen Abonnenten ausliefert. Setzen oder löschen Sie Retain pro Aufruf an Publish.
LastWillTestament registriert ein Topic und einen Payload, die der Broker veröffentlicht, wenn der Client unvermittelt die Verbindung verliert — die kanonische Methode, um Device-Offline-Ereignisse zu signalisieren.
Topic-Filter mit den Wildcards + (eine Ebene) und # (mehrere Ebenen): sensors/+/temperature oder devices/#.
Session Expiry, Receive Maximum, Maximum Packet Size, Topic Alias Maximum, Request Response Info, User Properties — allesamt zugänglich über ConnectProperties, PublishProperties und SubscribeProperties.
MQTT 5 erlaubt es dem Client (und dem Broker), lange Topic-Namen bei wiederholten Veröffentlichungen durch einen 2 Byte langen Integer-Alias zu ersetzen — enorme Einsparungen bei gesprächigen Telemetriedatenströmen.
MQTT-5-$share/<group>/<topic> verteilt eingehende Nachrichten per Round Robin auf eine Gruppe von Abonnenten — der Baustein für horizontale Worker-Pools.
Die MQTT-5-Eigenschaften ResponseTopic und CorrelationData machen aus Pub-Sub asynchronen RPC — direkt in die Events integriert, ohne zusätzlichen Framing-Aufwand.
MQTT-5-AUTH-Paket mit AuthenticationMethod / AuthenticationData für SCRAM-artige Challenges — rufen Sie Auth auf und behandeln Sie OnMQTTAuth.
HeartBeat sendet PINGREQ in einem einstellbaren Intervall. Der WatchDog stellt die Verbindung automatisch mit exponentiellem Backoff wieder her und nimmt die Abonnements wieder auf.
Betreiben Sie MQTTS auf Port 8883 (reines TCP+TLS) oder WSS auf Port 443 mit Client-Zertifikaten. TLSOptions.IOHandler wählt OpenSSL (plattformübergreifend) oder SChannel (Windows-Kernel-TLS).
Schlankes Framing, geringer Overhead und zustandsbehaftete Sessions machen MQTT zur Standardwahl für diese Szenarien.
Sensoren streamen Temperatur-, Vibrations-, GPS- und Batteriewerte über MQTT-Sessions mit Keep-Alive — selbst über instabile LTE-/Cat-M-/NB-IoT-Verbindungen.
Bidirektionaler Befehlskanal mit QoS 1 für Flotten-Tracker, OBD-Gateways und EV-Ladestationen — Reconnect-and-Resume ohne Verlust von Veröffentlichungen.
Ersetzen Sie OPC-UA-Polling durch ereignisgesteuertes Publish-Subscribe. Topic-Aliase und gemeinsame Abonnements skalieren auf Tausende von PLCs und Feldgeräten.
Beleuchtung, HLK, Schlösser und Anwesenheitssensoren kommunizieren über Mosquitto oder Home Assistant — der Delphi-Client lässt sich genauso einfach integrieren wie jeder eingebettete Knoten.
Dieselbe Komponente kommuniziert mit AWS IoT Core, Azure IoT Hub, Google Cloud IoT, IBM Watson, HiveMQ Cloud und EMQX — mit X.509-Client-Zertifikaten oder SAS-Tokens.
MQTT-over-WebSocket auf RabbitMQ Web-MQTT (Port 15675) ermöglicht es demselben Broker, über einen einzigen TLS-Port an Delphi-Clients und JS-Dashboards zu pushen.
Langlebige MQTT-Sessions auf iOS/Android mit Last Will liefern Ihnen Presence und schlanken Push ohne herstellerspezifischen Anbieter.
Entkoppeln Sie Producer und Consumer über einen zentralen Broker. Gemeinsame Abonnements verteilen die Arbeit per Round Robin auf einen Pool von Delphi-Worker-Diensten.
Spezifikationskonformer Client — verifiziert gegen die Broker, die unsere Kunden tatsächlich einsetzen.
X.509-Client-Zertifikate, SigV4 über WebSocket und die Quotas des AWS-IoT-Brokers. Siehe die dedizierte Seite zu AWS IoT.
Device-SAS-Tokens, Twin-/Method-Topics und DPS-Provisionierung. Siehe die Seite Azure IoT Hub.
Vollständige MQTT-5-Property-Oberfläche, gemeinsame Abonnements, Enhanced Auth und HiveMQ Cluster.
Der Referenz-Open-Source-Broker — sowohl MQTT 3.1.1 als auch 5.0, über TCP oder WebSocket.
Massiv skalierbarer Broker mit gemeinsamen Abonnements, Rule Engine und Bridge zu Kafka. Drop-in.
MQTT-over-WebSocket-Plugin auf Port 15675 — das Standardgespann für Browser- und Delphi-Dashboards.
Clusterfähiger MQTT-Broker auf Basis von Erlang/OTP — sowohl der MQTT-3.1.1- als auch der 5.0-Modus besteht die Testsuite.
Der eingebaute MQTT-Listener von Apache ActiveMQ und der Artemis-Broker — Multi-Protokoll-Koexistenz mit AMQP, STOMP und JMS.
Kombinieren Sie einen TsgcWebSocketClient mit einem TsgcWSPClient_MQTT, verdrahten Sie OnMQTTConnect / OnMQTTPublish und führen Sie anschließend Subscribe und Publish aus.
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;
// Eine beibehaltene QoS-1-Nachricht veröffentlichen
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);
Maßgebliche Quellen für die von dieser Komponente implementierten Protokolle.
Springen Sie direkt zur Komponentenreferenz, holen Sie sich das einsatzbereite Demoprojekt und laden Sie die Testversion herunter.
| Online-Hilfe — Protocol_MQTT Vollständige Referenz zu Eigenschaften, Methoden und Events dieser Komponente. | Öffnen | |
| Demoprojekt — Demos\Protocols\MQTT Einsatzbereites Beispielprojekt. Im sgcWebSockets-Paket enthalten — laden Sie unten die Testversion herunter. | Öffnen | |
| Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi, C++ Builder und .NET sowie Verweise auf Primärquellen — ausschließlich zu dieser Komponente. | Öffnen | |
| Benutzerhandbuch (PDF) Ausführliches Handbuch zu allen Komponenten der Bibliothek. | Öffnen |