Esempio n. 1
0
        public async Task <IHttpActionResult> SendRoomTemperature(RoomTemperatureMessage message)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    CreateIfNotExists(message.TopicId, message.SubscriptionName);

                    var tpClient = TopicClient.CreateFromConnectionString(_connectionString, message.TopicId);

                    var topicMessage = new BrokeredMessage(message.Message);

                    // Set additional custom app-specific property.
                    topicMessage.Properties["MessageNumber"] = message.TopicId;

                    await tpClient.SendAsync(topicMessage).ConfigureAwait(false);
                }

                return(StatusCode(HttpStatusCode.NoContent));
            }
            catch (Exception ex)
            {
                return(StatusCode(HttpStatusCode.InternalServerError));
            }
        }
Esempio n. 2
0
        public void SubscribeToRoomTemperature(string topicId, string subscriptionName, string clientId)
        {
            var subscriptionClient = SubscriptionClient.CreateFromConnectionString(_connectionString, topicId, subscriptionName);

            // Configure the callback options.
            OnMessageOptions options = new OnMessageOptions
            {
                AutoComplete     = false,
                AutoRenewTimeout = TimeSpan.FromSeconds(10)
            };

            subscriptionClient.OnMessage((message) =>
            {
                try
                {
                    var responsemessage = new RoomTemperatureMessage()
                    {
                        SubscriptionName = subscriptionName, Message = message.GetBody <RoomTemperature>()
                    };

                    // Process message from subscription.
                    Hub.Clients.Group(clientId).onReceiveMessage(responsemessage);

                    // Remove message from subscription.
                    message.Complete();
                }
                catch (Exception ex)
                {
                    // Indicates a problem, unlock message in subscription.
                    message.Abandon();
                    var errormessage = new { message = "Server Error, Please contact your system adminstrator" };

                    Hub.Clients.Group(clientId).onErrorMessage(errormessage);
                }
            }, options);
        }