Protocole MQTT
Protocole de messaging publish-subscribe léger conçu pour l'IoT et les appareils contraints. Prise en charge complète des spécifications MQTT 3.1.1 et MQTT 5.0.
Protocole de messaging publish-subscribe léger conçu pour l'IoT et les appareils contraints. Prise en charge complète des spécifications MQTT 3.1.1 et MQTT 5.0.
Messaging publish-subscribe léger pour l'IoT et les appareils contraints. Prise en charge complète de MQTT 3.1.1 et MQTT 5.0, sur WebSocket ou TCP brut.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Associe un TsgcWebSocketClient à un 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;
// Publish a retained QoS 1 message
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);
10 propriétés publiées, 9 méthodes et 13 événements — alignés sur la référence TsgcWSPClient_MQTT.
MQTTVersion sélectionne le niveau annoncé dans le paquet CONNECT — MQTT 3.1.1 ou MQTT 5.0. ConnectProperties porte les champs MQTT 5 session-expiry, receive-maximum, packet-size, topic-alias et extended-auth.
Branche la propriété Client sur un TsgcWebSocketClient pour faire passer MQTT sur WebSocket, ou sur un TsgcWSMQTTBroker via Broker pour utiliser le transport TCP natif sur le port 1883/8883.
Publie en QoS 0, 1 ou 2 avec retain optionnel. La propriété QoS contrôle le niveau par défaut, l'intervalle de réessai et le timeout. PublishAndWait bloque jusqu'à ce que le broker acquitte — utile pour les publications transactionnelles.
LastWillTestament enregistre le topic, le payload, le QoS et le flag retain que le broker publiera au nom de ce client si la connexion tombe sans clôture propre — une façon propre de signaler les déconnexions d'appareils.
Subscribe / UnSubscribe acceptent des filtres de topic avec les jokers + et #. OnMQTTPublish livre les messages entrants ; OnMQTTPublishEx donne les octets bruts / le stream. Le handshake QoS 2 complet est exposé via OnMQTTPubRec, OnMQTTPubRel, OnMQTTPubComp.
HeartBeat envoie PINGREQ sur une minuterie et détecte les chutes silencieuses du broker. Authentication envoie un UserName/Password dans CONNECT. Auth améliorée MQTT 5 : appelle Auth et gère OnMQTTAuth pour les challenges de type SCRAM.
Sources de référence pour les protocoles implémentés par ce composant.
Lien direct vers la référence du composant, récupère le projet de démo prêt à exécuter 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 de ce composant. | Ouvrir | |
| Projet de démo — Demos\Protocols\MQTT Projet d’exemple prêt à exécuter. Livré dans le paquet 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 |