public IHttpActionResult NewMessage(DevicePowerUsage message) { var context = GlobalHost.ConnectionManager.GetHubContext <MyHub>(); context.Clients.All.deviceUpdate(message); return(Ok()); }
static async Task Listen(string partitionId) { Console.WriteLine("Listening to partition " + partitionId); // receive all events after UtcNow (replay events) var receiver = await _eventHubClient.GetDefaultConsumerGroup().CreateReceiverAsync(partitionId, DateTime.UtcNow); while (true) { // wait for a event to receive var eventData = await receiver.ReceiveAsync(); if (eventData == null) { continue; } // read event data var json = Encoding.ASCII.GetString(eventData.GetBytes()); var powerUsage = JsonConvert.DeserializeObject <PowerUsage>(json); var deviceId = eventData.SystemProperties["iothub-connection-device-id"].ToString(); Console.WriteLine("Event received: " + json); // post to signalr (notify web clients) var signalrRequest = new DevicePowerUsage { Id = Guid.Parse(deviceId), Value = powerUsage.Value }; await HttpService.Post("api/deviceupdate", signalrRequest); } }