publish method

Future publish(
  1. String topic,
  2. String data,
  3. Map<String, dynamic> options
)

Publish a message to a specified topic

  • topic a topic name
  • data a message to be published
  • options 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);
      }
    });
  });
}