1
我擔心如何在以下情況下使用SgnalR:呼叫客戶端方法SignalR項目
有一個非集線器服務項目定期運行耗時的任務。 應該通知客戶端正在運行的任務的進度。經過一番研究,SignalR似乎是這個目的的正確選擇。
問題是,我希望Service-Hub-Clients系統儘可能鬆散耦合。所以,我主持了中心在IIS作爲一個SignalR文檔建議,加入到外項目集線器上下文的引用,並呼籲在客戶端的方法:
hubContext = GlobalHost.ConnectionManager.GetHubContext<TheHub>()
hubContext.Clients.All.progress(n, i);
客戶端:
private void InitHub()
{
hubConnection = new HubConnection(ConfigurationManager.AppSettings["hubConnection"]);
hubProxy = hubConnection.CreateHubProxy("TheHub");
hubConnection.Start().Wait();
}
hubProxy.On<int, int>("progress", (total, done) =>
{
task1Bar.Invoke(t => t.Maximum = total);
task1Bar.Invoke(t => t.Value = done);
});
在客戶端方法沒有被調用,經過兩天的研究,我無法得到它的工作,儘管當從Hub本身打電話時,它工作正常。我懷疑我缺少一些配置
你能告訴我們你是如何創建'HubConnection'更多的代碼和'IHubProxy' –
嗨,邁克爾。我在 – GAG
上面添加了代碼好的,通常這應該起作用。檢查'n'和'i'是否都是'int'類型。此外,在'TheHub'中重載'Task OnConnected'方法,並且在'hubConnection.Start()'制動點被擊中後添加一個斷點來檢查。 –