示例#1
0
        public IHttpActionResult NewMessage(DevicePowerUsage message)
        {
            var context = GlobalHost.ConnectionManager.GetHubContext <MyHub>();

            context.Clients.All.deviceUpdate(message);
            return(Ok());
        }
示例#2
0
        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);
            }
        }