I am really liking this MQTT protocol and am looking to use it in my current project. However, I am having an issue.
I wrote a mini test program to test Mosquitto Broker (MQTT). So far, I am able to publish a topic and send its payload and receive the payload on the other end, but I can't seem to read or receive a payload for a topic into my test program. All I can do is SUBSCRIBE to a TOPIC. I thought MQTT broker communicates with publisher and subscribers back and forth or two ways.
...
uses MQTT;
...
var
MQTTClient2:TMQTTClient;
...
procedure TForm1.BCButton3Click(Sender: TObject);
begin
MQTTClient2.Publish('Emergency_Stop','1');
end;
procedure TForm1.BCButton4Click(Sender: TObject);
begin
MQTTClient2.OnPublish:=@myPublish;
MQTTClient2.Subscribe('Emergency_Stop');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MQTTClient2 := TMQTTClient.Create('localhost',1883);
MQTTClient2.Connect;
end;
procedure TForm1.Destroy;
begin
MQTTClient2.Disconnect;
MQTTClient2.Free;
end;
procedure TForm1.myPublish(sender:TObject; topic, payload:string);
begin
Memo1.Lines.Add(topic+':'+payload);
end;
So, how do you setup your program to receive a topic and a payload from the Mosquitto Broker? I assume you need to have some sort of event for this. Any help will be greatly appreciated.