Protocole MQTT
Client MQTT 3.1.1 et MQTT 5.0 natif pour Delphi, C++Builder et .NET. Messaging publish-subscribe sur WebSocket ou TCP brut avec QoS 0/1/2, messages retenus, last will, alias de topics et abonnements partagés.
Client MQTT 3.1.1 et MQTT 5.0 natif pour Delphi, C++Builder et .NET. Messaging publish-subscribe sur WebSocket ou TCP brut avec QoS 0/1/2, messages retenus, last will, alias de topics et abonnements partagés.
Une implémentation MQTT de premier ordre qui s'exécute partout où tourne le runtime Delphi / .NET — des services desktop aux appareils mobiles, dialoguant avec tout broker MQTT conforme aux spécifications.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Toutes les fonctionnalités du protocole MQTT — pas seulement publish et subscribe.
Livraison fire-and-forget, at-least-once et exactly-once. Le handshake à quatre étapes de QoS 2 (PUBLISH → PUBREC → PUBREL → PUBCOMP) est entièrement exposé via des événements pour la logique de réessai / audit.
Branche la propriété Client sur un TsgcWebSocketClient pour exécuter MQTT sur WebSockets, ou utilise le transport TCP MQTT natif sur le port 1883 / 8883 — même composant, même API.
Marque les publications comme retenues afin que le broker délivre la dernière valeur connue à tout futur abonné. Active ou désactive retain à chaque appel sur Publish.
LastWillTestament enregistre un topic + payload que le broker publiera si le client se déconnecte brutalement — la manière canonique de signaler les événements device-offline.
Filtres de topic avec les wildcards + (un seul niveau) et # (multi-niveaux) : sensors/+/temperature ou devices/#.
Session expiry, receive maximum, maximum packet size, topic alias maximum, request response info, user properties — tous accessibles via ConnectProperties, PublishProperties et SubscribeProperties.
MQTT 5 permet au client (et au broker) de remplacer de longs noms de topic par un alias entier de 2 octets pour les publications répétées — d'énormes économies pour les flux de télémétrie bavards.
MQTT 5 $share/<group>/<topic> distribue les messages entrants en round-robin sur un groupe d'abonnés — la brique de base pour des pools de workers horizontaux.
Les propriétés MQTT 5 ResponseTopic et CorrelationData transforment le pub-sub en RPC asynchrone — intégré aux événements sans framing supplémentaire.
Paquet AUTH de MQTT 5 avec AuthenticationMethod / AuthenticationData pour les challenges de type SCRAM — appelle Auth, gère OnMQTTAuth.
HeartBeat envoie des PINGREQ à un intervalle paramétrable. Le WatchDog se reconnecte automatiquement avec backoff exponentiel et reprend les abonnements.
Exécute MQTTS sur 8883 (TCP brut+TLS) ou WSS sur 443 avec certificats client. TLSOptions.IOHandler sélectionne OpenSSL (multi-plateforme) ou SChannel (TLS kernel Windows).
Framing léger, faible surcharge et sessions à état font de MQTT le choix par défaut pour ces scénarios.
Les capteurs diffusent des relevés de température, vibration, GPS et batterie via des sessions MQTT keep-alive — même sur des liens LTE/Cat-M/NB-IoT instables.
Canal de commande bidirectionnel avec QoS 1 pour trackers de flotte, passerelles OBD et bornes de recharge VE — reconnect-and-resume sans perdre de publications.
Remplace le polling OPC-UA par du publish-subscribe événementiel. Les alias de topics et abonnements partagés montent à l'échelle de milliers de PLC et appareils de terrain.
Éclairage, HVAC, serrures et capteurs de présence dialoguant via Mosquitto ou Home Assistant — le client Delphi s'intègre aussi facilement que n'importe quel nœud embarqué.
Le même composant dialogue avec AWS IoT Core, Azure IoT Hub, Google Cloud IoT, IBM Watson, HiveMQ Cloud et EMQX — avec certificats client X.509 ou jetons SAS.
MQTT-over-WebSocket sur RabbitMQ Web-MQTT (port 15675) permet au même broker de pousser vers les clients Delphi et les dashboards JS sur un unique port TLS.
Des sessions MQTT longue durée sur iOS/Android avec Last Will te donnent présence et push léger sans fournisseur propriétaire.
Découple producteurs et consommateurs via un broker central. Les abonnements partagés répartissent le travail en round-robin sur un pool de services workers Delphi.
Client conforme aux spécifications — vérifié face aux brokers que nos clients déploient réellement.
Certificats client X.509, SigV4 sur WebSocket et quotas du broker AWS IoT. Voir la page dédiée AWS IoT.
Jetons SAS device, topics de twin/method et provisioning DPS. Voir la page Azure IoT Hub.
Surface complète des propriétés MQTT 5, abonnements partagés, authentification renforcée et HiveMQ Cluster.
Le broker open-source de référence — à la fois MQTT 3.1.1 et 5.0, sur TCP ou WebSocket.
Broker massivement scalable avec abonnements partagés, moteur de règles et bridge vers Kafka. Drop-in.
Plugin MQTT-over-WebSocket sur le port 15675 — l'association standard pour les dashboards navigateur + Delphi.
Broker MQTT clusterisé bâti sur Erlang/OTP — les modes MQTT 3.1.1 et 5.0 passent tous deux la suite de tests.
Le listener MQTT intégré d'Apache ActiveMQ et le broker Artemis — coexistence multi-protocole avec AMQP, STOMP et JMS.
Associe un TsgcWebSocketClient à TsgcWSPClient_MQTT, branche OnMQTTConnect / OnMQTTPublish, puis Subscribe et Publish.
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;
// Publier un message QoS 1 retenu
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);
Sources faisant autorité pour les protocoles que ce composant implémente.
Lien direct vers la référence du composant, récupère le projet de démo prêt à l'emploi et télécharge l'essai.
| Aide en ligne — Protocol_MQTT Référence complète des propriétés, méthodes et événements pour ce composant. | Ouvrir | |
| Projet de démo — Demos\Protocols\MQTT Projet d'exemple prêt à l'emploi. Livré dans le package sgcWebSockets — télécharge l'essai ci-dessous. | Ouvrir | |
| Document technique (PDF) Fonctionnalités, démarrage rapide, exemples de code pour Delphi, C++ Builder et .NET, et références aux sources primaires — ce composant uniquement. | Ouvrir | |
| Manuel utilisateur (PDF) Manuel exhaustif couvrant chaque composant de la bibliothèque. | Ouvrir |