publish method
Publish a message to a specified topic
topic
a topic namedata
a message to be publishedoptions
publishing options
Implementation
Future publish(
String topic, String data, Map<String, dynamic> options) async {
// Check for open connection
checkOpen();
final builder = mqtt_client.MqttClientPayloadBuilder();
builder.addString(data);
await Future(() async {
connection_!.publishMessage(topic, options['qos'], builder.payload!,
retain: options['retain']);
}).then((value) {
connection_?.published?.listen((mqtt_client.MqttPublishMessage message) {
for (var subscription in subscriptions_) {
// Todo: Implement proper filtering by wildcards?
if (subscription.filter && topic != subscription.topic) {
continue;
}
var data = String.fromCharCodes(message.payload.message);
subscription.listener
.onMessage(message.variableHeader!.topicName, data, message);
}
});
});
}