我有一個Web應用程序,它在儀表板上有幾個圖表。圖表數據在客戶端調用WCF服務方法的document.ready函數上獲取。帶SignalR的WCF服務
我想要的是現在在我的應用程序中使用SignalR。我對SignalR真的很陌生。我怎樣才能從SignalR Hub調用WCF方法,或者你可以說,不是從服務器拉數據,而是希望WCF服務每隔一分鐘向客戶端推送數據。
signalR和WCF服務之間是否有通信方式。
另一種方法可以是強制客戶端每分鐘向WCF服務請求數據。
任何幫助將非常感激。
我已經完成了以下工作。我的控制板頁面
<script src="Scripts/jquery.signalR-2.0.3.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="/signalr/hubs"></script>
<a id="refresh">Refresh</a>
$(function() {
var dashboardHubProxy = $.connection.dashboardHub;
$.connection.hub.start().done(function() {
// dashboardHubProxy.server.refreshClient(parameters);
$("#refresh").click(function() {
dashboardHubProxy.server.refreshClient(parameters);
});
});
dashboardHubProxy.client.refreshChart = function (chartData) {
debugger;
DrawChart(chartData, 'Hourly Call Count For Last ' + Duration + ' Days', '#chartHourly', 'StackedAreaChart');
};
});
和我的儀表盤轂類上
客戶端功能如下
public class DashboardHub : Hub
{
private readonly ReportService ReportService = new ReportService();
public void RefreshClient(string parameters)
{
var chartData = ReportService.GenerateHourlyCallsTrendGraphicalReport(parameters);
Clients.All.refreshChart(chartData);
}
}
我SignalR啓動類是如下
[assembly: OwinStartup(typeof(CallsPortalWeb.Startup), "Configuration")]
namespace CallsPortalWeb
{
public static class Startup
{
public static void Configuration(IAppBuilder app)
{
ConfigureSignalR(app);
}
public static void ConfigureSignalR(IAppBuilder app)
{
app.MapSignalR();
}
}
}
當我點擊在刷新按鈕上以及在集線器上使用RefreshClient方法的調試器時,調試器無法訪問會議這意味着我無法調用SignalR的服務器端方法。
web.config有什麼需要做的嗎?
我唯一真正想要的是能夠使服務器將數據推送到儀表板 –
不幸的是,我們不會爲您編寫代碼,您可以提供代碼,我們可以幫助澄清它並磨練您的嘗試。我在下面提供的鏈接將解釋SignalR它不是神奇的事情,你必須閱讀和了解它,我提供了資源來做到這一點。如果你沒有提供你已經嘗試過的代碼,那麼你將無法找到你正在尋找的答案,因爲我們沒有什麼可以指導你。 – Tony
爲了進一步闡述我的評論,你是否知道SignalR不會自己保留連接?你打算如何存儲誰連接誰,誰是誰的組成部分,誰將獲得你想要發送到儀表板的這些更新,你是使用靜態集合還是持久存儲在數據庫中,你打算如何使用多個服務器?這個儀表板用戶是特定用戶還是將數據發送給全世界?信號後面還有更多的東西,然後只是發送消息並從服務器更新ui。 – Tony