如何在新数据插入azure表存储

时间:2017-06-15 18:27:27

标签: c# asp.net-mvc signalr azure-table-storage

我有一个Azure表存储,可以从Web服务中插入数据。

我的应用程序(ASP.Net MVC,VS 2017)已实现SignalR,以从Azure表存储接收任何已更改的数据。

我的问题

新数据到达表存储后,只有刷新浏览器时,最新数据才会自动反映在任何其他已打开的浏览器中 - 无论是在相同还是不同的计算机系统中。它不会自动显示更改后的值在新数据进入表存储后,在任何打开的浏览器中。 我想这可能是因为当我刷新浏览器时,根据我的代码,它从Table和SignalR中获取数据以将数据发送到其他客户端。

因此,每当有新数据到达时,从表中发送通知存在差距。

我的查询

  1. 我在这里缺少的是什么 - 它没有自动在浏览器上显示最新数据?

  2. 或者,Table Storage没有任何通知机制来通知新数据到达? 如果是这样,应该在新数据何时到达Azure表存储时接收通知?

  3. 我的行动方法

    [HttpGet]
        public ActionResult Index()
        {
            var model = SignalRepository.LatestSignalCollection();// Connects with Azure to fetch the latest 5 records
            return View(model);
    
        }
    

    我的SignalR Hub代码

    public SignalHub()
        {
            SignalRepository.SignalSubscriber();
            var signalData = SignalRepository.LatestSignalCollection(); //LatestSignalCollection() ===>  Connects with Azure to fetch the latest 5 records
            GetAllClients().All.SendSignalData(signalData);
    
        }
    

    我的js文件 - SignalR Connect代码

    var signalHub = $.connection.signalHub; //alert("ACCC");
    $.connection.hub.logging = true;
    // Start the hub
    $.connection.hub.start();
    signalHub.client.SendSignalData = function (signalData) {
         updateSignalData(signalData);// updates the elements in Index.cshtml
    }
    

1 个答案:

答案 0 :(得分:1)

当从Web服务插入的新数据到达Azure表存储时,您似乎希望将通知推送到所有连接的客户端。我建议您在执行代码将数据插入Azure表存储后调用hub方法向所有连接的客户端广播新数据。

var hub = new HubConnection("http://xxx/signalr/hubs");

var proxy = hub.CreateHubProxy("{HubName}");
hub.Start().Wait();

//invoke hub method
proxy.Invoke("{HubMethod}", "{partitionkey&rowkey}");

在您的集线器方法中,您将获得最新数据的分区键行键,然后您可以根据分区键和行键检索实体,并调用JavaScript端函数SendSignalData来更新网页元素。