QuickStart
Bağlanın, abone olun, yayımlayın
Protokolü bir istemciye bağlayın, bağlantıyı açın, bir konuya abone olun ve ona yayın yapın. Mesaj OnMQTTPublish üzerinde geri gelir.
uses
Classes, SysUtils,
sgcWebSocket, sgcWebSocket_Classes, sgcWebSocket_Protocols,
sgcWebSocket_Types, sgcWebSocket_Protocol_MQTT_Client,
sgcWebSocket_Protocol_MQTT_Message;
procedure TfrmClientPROTOCOL.FormCreate(Sender: TObject);
begin
WSClient := TsgcWebSocketClient.Create(Self);
WSClient.Host := 'www.esegece.com';
WSClient.Port := 15675;
WSClient.TLS := False;
MQTT.Client := WSClient;
WSClient.Active := True;
end;
WebSocket yerine TCP üzerinden düz MQTT için bunun yerine sgcTCP_Client_WS içinden bir TsgcTCPClient oluşturun ve MQTT.Client özelliğini ona yöneltin. Başka hiçbir şey değişmez; iki bileşenin ayrı olmasının nedeni budur.
procedure TfrmClientPROTOCOL.btnSubscribeClick(Sender: TObject);
begin
MQTT.Subscribe('sgc/quickstart');
end;
procedure TfrmClientPROTOCOL.btnPublishClick(Sender: TObject);
begin
MQTT.Publish('sgc/quickstart', 'hello from Delphi',
mtqsAtLeastOnce, False);
end;
procedure TfrmClientPROTOCOL.btnUnsubscribeClick(Sender: TObject);
begin
MQTT.UnSubscribe('sgc/quickstart');
end;
Publish, paket tanımlayıcısı olan bir Word döndürür ve beklemez. PublishAndWait bir Boolean döndürür ve aracı onaylayana kadar bekler; zaman aşımı varsayılan olarak on saniyedir. TmqttQoS, sgcWebSocket_Types içinden gelir.
procedure TfrmClientPROTOCOL.MQTTMQTTConnect(Connection: TsgcWSConnection;
const Session: Boolean; const ReasonCode: Integer;
const ReasonName: String;
const ConnectProperties: TsgcWSMQTTCONNACKProperties);
begin
memoLog.Lines.Add('#connected: ' + ReasonName);
end;
procedure TfrmClientPROTOCOL.MQTTMQTTSubscribe(Connection: TsgcWSConnection;
aPacketIdentifier: Word; aCodes: TsgcWSSUBACKS;
SubscribeProperties: TsgcWSMQTTSUBACKProperties);
begin
memoLog.Lines.Add('#subscribed: ' + IntToStr(aPacketIdentifier));
end;
procedure TfrmClientPROTOCOL.MQTTMQTTPublish(Connection: TsgcWSConnection;
aTopic, aText: string;
PublishProperties: TsgcWSMQTTPUBLISHProperties);
begin
memoLog.Lines.Add(aTopic + ': ' + aText);
end;
Bunlar ilk önce önemli olan üçüdür. Onay akışı, bağlantının kesilmesi ve MQTT 5.0 kimlik doğrulaması için dokuz tane daha vardır. İşleyicileri IDE'nin oluşturmasına izin verin, çünkü parametre listeleri uzundur ve özellik nesneleri olaya göre farklılık gösterir.
Üç sekmenin hepsi, form denetimleri sabit değerlerle değiştirilmiş olarak paketle gelen Demos\02.WebSocket_Protocols\08.MQTT_Client\uClientMQTT.pas demosundan alınmıştır. MQTT nesnesi o projede forma yerleştirilmiştir; onu kodla oluşturmak aynı şekilde çalışır.