2016-05-13 27 views
-1

在特定時間間隔後實時恢復數據我有包含三個面板的頁面,包含員工出勤,薪水,生產。我必須通過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

也許我誤會了,但對我來說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"); 
    }); 

} 

如果你想保持signalr唯一要做的事情就是要補充一點: window.setTimeout(getData(), 60000)

+0

我想在顯示數據的getData()函數的回調中每隔1分鐘一次 – anand

+0

您應該使用60000來延遲所以;) –

+0

是您的代碼將在接下來的1分鐘內調用getData()方法interal – anand