显示从IoT Hub on View(网页)收到的数据

时间:2017-01-25 06:03:42

标签: c# asp.net asp.net-mvc azure iot

我使用https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-csharp-csharp-getstarted作为参考来创建我的ASPNet MVC应用程序

我使用以下代码从IoT Hub接收数据

private static async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct)
{
    var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow);
    while (true)
    {
        if (ct.IsCancellationRequested) break;
        EventData eventData = await eventHubReceiver.ReceiveAsync();
        if (eventData == null) continue;

        string data = Encoding.UTF8.GetString(eventData.GetBytes());

        //Console.WriteLine("Message received. Partition: {0} Data: '{1}'", partition, data);

    }
}

由此我看到变量 字符串数据 中收到的数据 现在,我希望在从IoT Hub收到的View(MVC View,即网页)上显示这些数据。

我的查询

如何将 var string data 中的值定向显示在View上?

1 个答案:

答案 0 :(得分:1)

这里需要一些实时处理基础设施。

正如@juunas所说,signal-r在这里是一个不错的选择。除此之外,如果安全性是一个因素,对于像这样的简单事情来说这将是一个很大的开销,你可以创建一个web api,或者一个返回JsonResult的mvc动作,并且每隔x秒轮询一次。

更新:

基本上,你不能 - 你需要实时处理。

使用while(true)循环,您将阻止请求线程,它将永远不会返回。您只需轮询一个WebAPI / Json MVC控制器,您就可以从IoT Hub消息队列中获取最新消息。

  1. UI在您的应用上每隔X秒轮询一次WebAPI / MVC Json操作,发送最后收到的消息ID

  2. WebAPI / MVC Json Action从IoT Hub消息队列中获取所有消息>最后一条消息ID

  3. 将新邮件发送回客户端

  4. 这将是一种解决问题的简单方法,并且与没有WebSockets或Signal-R的情况一样接近实时。 (顺便说一句,你可以在一个WebAPI / MVC应用程序中托管Signal-R,你不必在第二个应用程序中拥有)