Example #1
0
        public async Task InitializePublisher(ClientConfiguration configuration)
        {
            var options = new MqttClientOptionsBuilder()
                          .WithClientId(configuration.ClientId)
                          .WithCleanSession(false)
                          .WithTcpServer(configuration.Host, configuration.Port)
                          .WithCredentials(configuration.Username, configuration.Password)
                          .WithKeepAlivePeriod(TimeSpan.FromMilliseconds(configuration.KeepAlivePeriod))
                          .WithCommunicationTimeout(TimeSpan.FromMilliseconds(configuration.CommunicationTimeout)).Build();

            var mqttClient    = new MqttFactory().CreateMqttClient();
            var connectResult = await mqttClient.ConnectAsync(options);

            Console.WriteLine($"Publisher connection result : {connectResult.ResultCode}");

            var rpcOptions = new MqttRpcClientOptions()
            {
                TopicGenerationStrategy = new DefaultMqttRpcClientTopicGenerationStrategy()
            };

            var rpcClient = new MqttRpcClient(mqttClient, rpcOptions);

            var command = new CommandDto
            {
                Id      = 1,
                Message = "Say Hello world!"
            };

            var payload = JsonConvert.SerializeObject(command);

            Console.WriteLine($"Publisher requesting work \"DoWork\" with Id : 1");

            var responseMqtt = await rpcClient.ExecuteAsync(TimeSpan.FromSeconds(50), "DoWork", payload, MqttQualityOfServiceLevel.AtLeastOnce);

            var response = Encoding.Default.GetString(responseMqtt);

            Console.WriteLine($"Publisher got response : {response}");
        }
Example #2
0
 public async Task <MqttRpcClient> ConnectRpcClient(MqttRpcClientOptions options)
 {
     return(new MqttRpcClient(await ConnectClient(), options));
 }