Example #1
0
        private async Task ReceiveHubMessagesAsync()
        {
            using (Message receivedMessage = await DeviceClient.ReceiveAsync(TimeSpan.FromSeconds(30)).ConfigureAwait(false))
            {
                if (receivedMessage == null)
                {
                    Console.WriteLine("\t{0}> Timed out", DateTime.Now.ToLocalTime());
                    return;
                }

                var message = new MqttApplicationMessageBuilder()
                              .WithPayload(receivedMessage.GetBytes());
                string payload = Encoding.ASCII.GetString(receivedMessage.GetBytes());
                Console.WriteLine("\t{0}> Received message: {1}", DateTime.Now.ToLocalTime(), payload);
                if (receivedMessage.Properties.ContainsKey("topic"))
                {
                    message.WithTopic(receivedMessage.Properties["topic"]);
                }
                var keyExclude = new string[] { "topic", "clientId" };
                foreach (var prop in receivedMessage.Properties.Where(k => !keyExclude.Contains(k.Key)))
                {
                    message.WithUserProperty(prop.Key, prop.Value);
                }
                await LocalClient.PublishAsync(message.Build(), CancellationToken.None);

                await DeviceClient.CompleteAsync(receivedMessage).ConfigureAwait(false);
            }
        }