QuickStart
Connetti, sottoscrivi, pubblica
Collega il protocollo a un client, apri la connessione, sottoscrivi un topic e pubblica su di esso. Il messaggio torna in OnMQTTPublish.
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;
Per MQTT semplice su TCP invece che su WebSocket, crea invece un TsgcTCPClient da sgcTCP_Client_WS e punta MQTT.Client a quello. Nient'altro cambia, ed è il motivo per cui i due componenti sono separati.
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 restituisce un Word, l'identificatore del pacchetto, e non attende. PublishAndWait restituisce un Boolean e si blocca finché il broker non conferma, con un timeout predefinito di dieci secondi. TmqttQoS proviene da sgcWebSocket_Types.
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;
Questi sono i tre che contano per primi. Ne esistono altri nove per il flusso di conferma, la disconnessione e l'autenticazione MQTT 5.0. Lascia che sia l'IDE a generare i gestori, perché gli elenchi di parametri sono lunghi e gli oggetti delle proprietà cambiano per ogni evento.