MQTT İstemci Bileşeni: sgcMQ | eSeGeCe

MQTT İstemcisi

TsgcWSPClient_MQTT, yerel bir MQTT 3.1.1 ve MQTT 5.0 istemcisidir. QoS 0, 1 ve 2 ile yayınlayın ve abone olun; saklanan mesajlar, bir Last Will and Testament, kalıcı oturumlar ve MQTT 5 eklentileri: neden kodları, kullanıcı özellikleri, konu takma adları, paylaşılan abonelikler ve gelişmiş kimlik doğrulama. Delphi ve C++ Builder'da aynı bileşen ve aynı API.

TsgcWSPClient_MQTT

Client özelliğine bir TsgcTCPClient atayın, protokol sürümünü MQTTVersion ile seçin, OnMQTTConnect ve OnMQTTPublish olaylarını bağlayın, ardından Subscribe ve Publish çağrılarını yapın.

Bileşen sınıfı

TsgcWSPClient_MQTT

Spesifikasyon

OASIS MQTT 3.1.1 ve MQTT 5.0

Taşıma

TCP (1883) veya TLS (8883)

Diller

Delphi, C++ Builder

Taşıma: düz TCP ve TLS. sgcMQ, düz TCP ve TLS üzerinden bağlanır. WebSocket üzerinden MQTT'ye ihtiyacınız varsa, bu, WebSocket istemcisini sağlayan bir sgcWebSockets paketi gerektirir.

Bağlanın, abone olun, yayınlayın

Client özelliğindeki bir TsgcTCPClient, MQTT'yi doğrudan TCP soketine yerleştirir. Şifreli bir broker için TLS'i açın ve bağlantı noktasını 8883 olarak ayarlayın.

uses
  sgcTCP_Client_WS, sgcWebSocket_Classes, sgcWebSocket_Types,
  sgcWebSocket_Protocols, sgcWebSocket_Protocol_MQTT_Client,
  sgcWebSocket_Protocol_MQTT_Message;

var
  TCPClient: TsgcTCPClient;
  MQTT: TsgcWSPClient_MQTT;
begin
  TCPClient := TsgcTCPClient.Create(nil);
  TCPClient.Host := 'broker.example.com';
  TCPClient.Port := 1883;
  TCPClient.WatchDog.Enabled := True;

  MQTT := TsgcWSPClient_MQTT.Create(nil);
  MQTT.Client := TCPClient;
  MQTT.MQTTVersion := mqtt5;
  MQTT.Authentication.Enabled  := True;
  MQTT.Authentication.UserName := 'sgc';
  MQTT.Authentication.Password := 'sgc';

  MQTT.LastWillTestament.Enabled := True;
  MQTT.LastWillTestament.Topic   := 'devices/sensor-01/status';
  MQTT.LastWillTestament.Message := 'offline';
  MQTT.LastWillTestament.QoS     := mtqsAtLeastOnce;
  MQTT.LastWillTestament.Retain  := True;

  MQTT.OnMQTTConnect := MQTTConnect;
  MQTT.OnMQTTPublish := MQTTPublish;

  TCPClient.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', mtqsAtLeastOnce);
  MQTT.Publish('devices/sensor-01/status',
    'online', mtqsAtLeastOnce, True);
end;

procedure TForm1.MQTTPublish(Connection: TsgcWSConnection;
  aTopic, aText: string;
  PublishProperties: TsgcWSMQTTPublishProperties);
begin
  Memo1.Lines.Add(aTopic + ' = ' + aText);
end;
// include: sgcTCP_Client_WS.hpp, sgcWebSocket_Protocols.hpp,
// sgcWebSocket_Protocol_MQTT_Client.hpp

TsgcTCPClient *TCPClient = new TsgcTCPClient(this);
TCPClient->Host = "broker.example.com";
TCPClient->Port = 1883;
TCPClient->WatchDog->Enabled = true;

TsgcWSPClient_MQTT *MQTT = new TsgcWSPClient_MQTT(this);
MQTT->Client = TCPClient;
MQTT->MQTTVersion = mqtt5;
MQTT->Authentication->Enabled  = true;
MQTT->Authentication->UserName = "sgc";
MQTT->Authentication->Password = "sgc";

MQTT->OnMQTTConnect = MQTTConnect;
MQTT->OnMQTTPublish = MQTTPublish;

TCPClient->Active = true;

void __fastcall TForm1::MQTTPublish(TsgcWSConnection *Connection,
    UnicodeString aTopic, UnicodeString aText,
    TsgcWSMQTTPublishProperties PublishProperties)
{
  Memo1->Lines->Add(aTopic + " = " + aText);
}

// In the OnMQTTConnect handler:
MQTT->Subscribe("sensors/+/temperature", mtqsAtLeastOnce);
MQTT->Publish("devices/sensor-01/status",
  "online", mtqsAtLeastOnce, true);

Temel özellikler & yöntemler

En sık başvurduğunuz üyeler.

Taşıyıcı

Client, soketin sahibi olan TsgcTCPClient'ı alır. Onun Host, Port, TLS, TLSOptions ve WatchDog özellikleri baytların nasıl yol alacağına karar verir.

Protokol sürümü

MQTTVersion, mqtt311 ya da mqtt5 seçer. MQTT 5 özellikleri ve neden kodları hatta yalnızca sürüm 5 seçildiğinde görünür.

Kimlik doğrulama

Authentication.Enabled, UserName ve Password, CONNECT paketini doldurur. MQTT 5 meydan okuma/yanıt şemaları için Auth'u OnMQTTAuth ile birlikte kullanın.

Yayınlama

Publish(topic, text, qos, retain) bir mesaj gönderir; ikili yükler için bir TStream aşırı yüklemesi vardır. PublishAndWait, broker paketi onaylayana kadar engeller.

Abone olma

Subscribe(topic, qos) tek bir filtre ya da bir TsgcWSTopics listesi alır, UnSubscribe ise bunu tersine çevirir. Joker karakterler tek bir düzey için +, geri kalanı için # şeklindedir.

Teslimat olayları

OnMQTTPublish, gelen bir mesajı teslim eder. QoS 2 el sıkışması OnMQTTPubRec, OnMQTTPubRel ve OnMQTTPubComp olarak ortaya çıkar; QoS 1 için OnMQTTPubAck vardır.

Last Will

LastWillTestament; bağlantı temiz bir DISCONNECT olmadan koptuğunda broker'ın sizin adınıza yayınladığı konuyu, mesajı, QoS'u ve saklama bayrağını taşır.

Oturumlar ve canlılık

ConnectProperties, MQTT 5 oturum sona ermesini ve sınırlarını ayarlar. HeartBeat, keep-alive PINGREQ'i yürütür; yanıtta OnMQTTPing tetiklenir.

QoS depolaması

QoS özelliği, giden QoS 1 ve 2 mesajlarının onay beklerken nasıl saklandığını ve yeniden denendiğini denetler.

Keşfetmeye devam edin

Çevrimiçi yardımTam API referansı ve kullanım kılavuzu.
Tüm sgcMQ BileşenleriYedi bileşenin tam özellik matrisine göz atın.
Ücretsiz Deneme Sürümünü İndirinİstemciyi Mosquitto, HiveMQ ya da kendi broker'ınıza karşı çalıştırın.
FiyatlandırmaTam kaynak kodlu Single, Team ve Site lisansları.
En avantajlı seçenek: All-AccessTüm eSeGeCe ürünleri, Premium Destek dahil, yılda €1,059'dan itibaren.
All-Access fiyatlarına bakın

Başlamaya Hazır mısınız?

Ücretsiz deneme sürümünü indirin ve Delphi ya da C++ Builder'dan ilk MQTT mesajınızı yayınlayın.