Как вызвать метод с помощью jquery на странице бритвы mvc с интервалом в 10 секунд и добавить вывод в html - PullRequest
0 голосов
/ 13 ноября 2018

под кодом читайте сообщения от iot hub по очереди, как только это произойдет.

  private async void MonitorEventHubAsync(DateTime startTime, CancellationToken ct, string consumerGroupName)
    {
        EventHubClient eventHubClient = null;
        EventHubReceiver eventHubReceiver = null;

        try
        {
            string mesageData = string.Empty;
            int eventHubPartitionsCount;

            string selectedDevice = "";
            eventHubClient = EventHubClient.CreateFromConnectionString("activeIoTHubConnectionString", "messages/events");
            mesageData = "Receiving events...\r\n";
            eventHubPartitionsCount = eventHubClient.GetRuntimeInformation().PartitionCount;
            string partition = EventHubPartitionKeyResolver.ResolveToPartition(selectedDevice, eventHubPartitionsCount);
            eventHubReceiver = eventHubClient.GetConsumerGroup(consumerGroupName).CreateReceiver(partition, startTime);

            //receive the events from startTime until current time in a single call and process them
            while (true)
            {
                var eventData = eventHubReceiver.ReceiveAsync(TimeSpan.FromSeconds(1)).Result;

                if (eventData != null)
                {
                    var data = Encoding.UTF8.GetString(eventData.GetBytes());
                    var enqueuedTime = eventData.EnqueuedTimeUtc.ToLocalTime();
                    var connectionDeviceId = eventData.SystemProperties["iothub-connection-device-id"].ToString();

                    if (string.CompareOrdinal(selectedDevice.ToUpper(), connectionDeviceId.ToUpper()) == 0)
                    {
                        mesageData += $"{enqueuedTime}> Device: [{connectionDeviceId}], Data:[{data}]";

                        if (eventData.Properties.Count > 0)
                        {
                            mesageData += "Properties:\r\n";
                            foreach (var property in eventData.Properties)
                            {
                                mesageData += $"'{property.Key}': '{property.Value}'\r\n";
                            }
                        }

                        mesageData += "\r\n";
                    }
                }
            }

        }
        catch (Exception ex)
        {

        }
    }

Я хочу показывать сообщения одно за другим на странице mvc cshtml, используя приведенный выше код, как я могу это сделать?

один подход, который я могу использовать, как показано ниже, может кто-нибудь помочь здесь?

1. В cshtml

<p id="pValue"></p>
  1. В сценарии
var someRootPath = "@Url.Content("~")";
         (function randomGenerator() {
            $.ajax({
                url: someRootPath + 'Home/GetValue',
                success: function (data) {
                    $('#pValue').html(data.someValue);
                },
                complete: function () {
                    setTimeout(randomGenerator, 1000);
                }
            });
        })();

3.Controller

[HttpGet]
public JsonResult GetValue()
{
    return Json( // call winform method which gives message data);
}

1 Ответ

0 голосов
/ 19 ноября 2018

как то так

var someRootPath = "@Url.Content("~")";

$(function(){

    randomGenerator();
    setTimeout(randomGenerator, 1000);

});
function randomGenerator() {
    $.ajax({
        url: someRootPath + 'Home/GetValue',
        success: function (data) {
            $('#pValue').html(data.someValue);
        }
    });
}
...