MQTT-protocol
Lichtgewicht publish-subscribe-protocol, ontworpen voor IoT en apparaten met beperkte middelen. Volledige ondersteuning voor de specificaties MQTT 3.1.1 en MQTT 5.0.
Lichtgewicht publish-subscribe-protocol, ontworpen voor IoT en apparaten met beperkte middelen. Volledige ondersteuning voor de specificaties MQTT 3.1.1 en MQTT 5.0.
Lichtgewicht publish-subscribe-messaging voor IoT en apparaten met beperkte middelen. Volledige ondersteuning voor MQTT 3.1.1 en MQTT 5.0, over WebSocket of raw TCP.
TsgcWSPClient_MQTT
Windows, macOS, Linux, iOS, Android
Standard / Professional / Enterprise
Koppel een TsgcWebSocketClient aan TsgcWSPClient_MQTT, hang OnMQTTConnect / OnMQTTPublish aan, en gebruik daarna Subscribe en 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 gepubliceerde eigenschappen, 9 methoden en 13 gebeurtenissen — afgeleid van de TsgcWSPClient_MQTT-referentie.
MQTTVersion selecteert het niveau dat in het CONNECT-pakket wordt aangekondigd — MQTT 3.1.1 of MQTT 5.0. ConnectProperties bevat de MQTT 5-velden session-expiry, receive-maximum, packet-size, topic-alias en extended-auth.
Sluit de Client-eigenschap aan op een TsgcWebSocketClient om MQTT over WebSockets te draaien, of op een TsgcWSMQTTBroker via Broker om het native TCP-transport op poort 1883/8883 te gebruiken.
Publiceer op QoS 0, 1 of 2 met optionele retain. De eigenschap QoS regelt het standaardniveau, het retry-interval en de time-out. PublishAndWait blokkeert tot de broker bevestigt — nuttig voor transactionele publishes.
LastWillTestament registreert het topic, de payload, de QoS en de retain-flag die de broker namens deze client publiceert als de verbinding niet netjes wordt afgesloten — een nette manier om disconnects van apparaten te signaleren.
Subscribe / UnSubscribe accepteren topic-filters met de wildcards + en #. OnMQTTPublish levert inkomende berichten; OnMQTTPublishEx geeft raw bytes / streams. De volledige QoS 2-handshake is beschikbaar via OnMQTTPubRec, OnMQTTPubRel en OnMQTTPubComp.
HeartBeat stuurt PINGREQ op een timer en detecteert stille broker-disconnects. Authentication stuurt een UserName/Password mee in CONNECT. MQTT 5 enhanced auth: roep Auth aan en handel OnMQTTAuth af voor SCRAM-stijl-challenges.
Autoritatieve bronnen voor de protocollen die dit component implementeert.
Direct linken naar de componentreferentie, het kant-en-klare demoproject pakken en de proefversie downloaden.
| Online help — Protocol_MQTT Volledige referentie van eigenschappen, methoden en gebeurtenissen voor dit component. | Openen | |
| Demoproject — Demos\Protocols\MQTT Kant-en-klaar voorbeeldproject. Zit in het sgcWebSockets-pakket — download hieronder de proefversie. | Openen | |
| Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi, C++ Builder en .NET en primaire bronverwijzingen — alleen dit component. | Openen | |
| Gebruikershandleiding (PDF) Uitgebreide handleiding voor elk component in de bibliotheek. | Openen |