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)); } }
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); }