Protocollo MQTT
Client MQTT 3.1.1 e MQTT 5.0 nativo per Delphi, C++Builder e .NET. Messaging publish-subscribe su WebSocket o TCP nativo con QoS 0/1/2, messaggi retained, last will, topic alias e subscription condivise.
Client MQTT 3.1.1 e MQTT 5.0 nativo per Delphi, C++Builder e .NET. Messaging publish-subscribe su WebSocket o TCP nativo con QoS 0/1/2, messaggi retained, last will, topic alias e subscription condivise.
Un'implementazione MQTT di prima classe che gira ovunque giri il runtime Delphi / .NET — dai servizi desktop ai dispositivi mobili, dialogando con qualsiasi broker MQTT conforme allo standard.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Ogni funzionalità a livello di protocollo di MQTT — non solo publish e subscribe.
Consegna fire-and-forget, at-least-once ed exactly-once. L'handshake a quattro vie di QoS 2 (PUBLISH → PUBREC → PUBREL → PUBCOMP) è completamente esposto tramite eventi per la logica di retry e audit.
Collegando la proprietà Client a un TsgcWebSocketClient si fa girare MQTT su WebSocket, oppure si usa il trasporto MQTT TCP nativo sulle porte 1883 / 8883 — stesso componente, stessa API.
Si possono contrassegnare le pubblicazioni come retained affinché il broker consegni l'ultimo valore noto a qualsiasi nuovo subscriber. Impostare o azzerare il flag retain in ogni chiamata a Publish.
LastWillTestament registra un topic e un payload che il broker pubblicherà se il client si disconnette in modo non controllato — il modo canonico per segnalare gli eventi di dispositivo offline.
Filtri di topic con wildcard + (singolo livello) e # (multilivello): sensors/+/temperature oppure devices/#.
Session expiry, receive maximum, maximum packet size, topic alias maximum, request response info, user properties — tutte accessibili tramite ConnectProperties, PublishProperties e SubscribeProperties.
MQTT 5 consente al client (e al broker) di sostituire i nomi di topic lunghi con un alias intero a 2 byte per le pubblicazioni ripetute — un enorme risparmio per i flussi di telemetria più verbosi.
La sintassi MQTT 5 $share/<group>/<topic> distribuisce i messaggi in arrivo in round-robin su un gruppo di subscriber — il mattone fondamentale per i pool di worker orizzontali.
Le proprietà ResponseTopic e CorrelationData di MQTT 5 trasformano il pub-sub in RPC asincrona — integrate negli eventi senza alcun framing aggiuntivo.
Pacchetto AUTH di MQTT 5 con AuthenticationMethod / AuthenticationData per challenge in stile SCRAM — sufficiente chiamare Auth e gestire OnMQTTAuth.
HeartBeat invia PINGREQ a un intervallo configurabile. Il WatchDog si riconnette automaticamente con backoff esponenziale e ripristina le subscription.
È possibile far girare MQTTS sulla porta 8883 (TCP nativo+TLS) o WSS sulla 443 con certificati client. TLSOptions.IOHandler seleziona OpenSSL (cross-platform) o SChannel (TLS del kernel di Windows).
Framing leggero, basso overhead e sessioni con stato rendono MQTT la scelta naturale per questi scenari.
I sensori trasmettono in streaming temperatura, vibrazioni, GPS e livello di batteria su sessioni MQTT con keep-alive — anche su link LTE/Cat-M/NB-IoT instabili.
Canale di comando bidirezionale con QoS 1 per tracker di flotta, gateway OBD e stazioni di ricarica per veicoli elettrici — riconnessione e ripresa senza perdere pubblicazioni.
Sostituisca il polling OPC-UA con il publish-subscribe event-driven. I topic alias e le subscription condivise scalano fino a migliaia di PLC e dispositivi di campo.
Illuminazione, HVAC, serrature e sensori di presenza che dialogano tramite Mosquitto o Home Assistant — il client Delphi si integra con la stessa facilità di qualsiasi nodo embedded.
Lo stesso componente dialoga con AWS IoT Core, Azure IoT Hub, Google Cloud IoT, IBM Watson, HiveMQ Cloud ed EMQX — con certificati client X.509 o token SAS.
MQTT su WebSocket con RabbitMQ Web-MQTT (porta 15675) consente allo stesso broker di inviare dati ai client Delphi e alle dashboard JS attraverso un'unica porta TLS.
Sessioni MQTT di lunga durata su iOS/Android con Last Will offrono presenza e push leggero senza dipendere da un provider specifico.
Disaccoppia producer e consumer tramite un broker centrale. Le subscription condivise distribuiscono il lavoro in round-robin su un pool di servizi worker Delphi.
Client conforme alle specifiche — verificato sui broker che i nostri clienti realmente utilizzano in produzione.
Certificati client X.509, SigV4 su WebSocket e quote del broker AWS IoT. Veda la pagina dedicata AWS IoT.
Token Device-SAS, topic per twin/method e provisioning DPS. Veda la pagina Azure IoT Hub.
Copertura completa delle proprietà MQTT 5, subscription condivise, enhanced auth e HiveMQ Cluster.
Il broker open source di riferimento — sia MQTT 3.1.1 sia 5.0, su TCP o WebSocket.
Broker estremamente scalabile con subscription condivise, rule engine e bridge verso Kafka. Sostituzione immediata.
Plugin MQTT su WebSocket sulla porta 15675 — l'abbinamento standard per dashboard browser + Delphi.
Broker MQTT in cluster costruito su Erlang/OTP — sia la modalità MQTT 3.1.1 sia la 5.0 superano la test suite.
Il listener MQTT integrato di Apache ActiveMQ e il broker Artemis — coesistenza multiprotocollo con AMQP, STOMP e JMS.
Abbini un TsgcWebSocketClient a un TsgcWSPClient_MQTT, colleghi OnMQTTConnect / OnMQTTPublish, quindi richiami Subscribe e 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;
// Pubblica un messaggio retained con QoS 1
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);
Fonti autorevoli per i protocolli implementati da questo componente.
Collegamenti diretti al riferimento del componente, al progetto demo pronto all'uso e al download della versione di prova.
| Guida online — Protocol_MQTT Riferimento completo di proprietà, metodi ed eventi di questo componente. | Apri | |
| Progetto demo — Demos\Protocols\MQTT Progetto di esempio pronto all'uso. Incluso nel pacchetto sgcWebSockets — scarichi la versione di prova qui sotto. | Apri | |
| Documento tecnico (PDF) Caratteristiche, guida rapida, esempi di codice per Delphi, C++ Builder e .NET e riferimenti alle fonti primarie — relativo a questo solo componente. | Apri | |
| Manuale utente (PDF) Manuale completo che copre ogni componente della libreria. | Apri |