SignalR在特定时间间隔后实时回收数据

时间:2016-05-13 08:17:30

标签: asp.net asp.net-mvc signalr

我的页面包含三个面板,用于员工关注,薪水,生产。我必须通过SignalR实时更新面板 我的中心课

public class MessagesHub : Hub
    {
        private string ConnectionString = ConfigurationManager.ConnectionStrings["database"].ToString();

        [HubMethodName("sendMessages")]
        public void SendMessages()
        {
            IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MessagesHub>();
            context.Clients.All.updateMessages();
        }
    }

在控制器

public ActionResult Panels()
{
   ...code..
   return Partial("_panelData", model);
}

部分页面包含面板以及要显示的数据 在主视图页面(面板)中,脚本标记

<script>
        $(function () {
            // Declare a proxy to reference the hub.
            var notifications = $.connection.messagesHub;

            //debugger;
            // Create a function that the hub can call to broadcast messages.
            notifications.client.updateMessages = function () {
                getData()

            };
            // Start the connection.
            $.connection.hub.start().done(function () {
                getData();
            }).fail(function (e) {
                alert(e);
            });
        });

        function getData() {
            $.ajax({
                url: '/PanelController/Panels',
                type: 'GET',
                dataType: 'html'
            }).success(function (result) {
                $('.panel').html(result)

            }).error(function () {
                window.console.log("failure");
            });
        }
    </script>

页面加载时工作正常。但我也希望它每隔1分钟加载一次数据 提前致谢

1 个答案:

答案 0 :(得分:1)

也许我很想念,但对我而言,SignalR在那里毫无用处。这样的事情应该有效:

 $(function() {  
   getData();
 });

 function getData() {
   $.ajax({
     url: '/PanelController/Panels',
     type: 'GET',
     dataType: 'html'
   }).success(function(result) {
     $('.panel').html(result)
     window.setTimeout(getData(), 60000)
   }).error(function() {
     window.console.log("failure");
   });

 }

如果你想保留信号灯,唯一要做的就是添加: {(1}}在getData函数()

的回调中