Я имею беспокойство о том, как использовать SgnalR по следующему сценарию:вызова метод клиента вне SignalR проекта
Существует услугу проект, не центр, который выполняет задачу трудоемкой периодически. Клиенты должны получать информацию о ходе выполнения задачи. После проведения некоторых исследований SignalR, казалось, был правильным выбором для этой цели.
Проблема в том, что я хочу, чтобы система Service-Hub-Clients была как можно более слабой. Итак, я прошел хаб в IIS и, как следует документация SignalR, добавил ссылку на контекст Hub во внешнем проекте и называется метод клиента:
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);
});
On на стороне клиента метод не вызывается, и после двух дней исследований я не могу заставить его работать, хотя при совершении вызова от самого концентратора он работает нормально. Я подозреваю, что мне не хватает какой-либо конфигурации.
Можете ли вы показать нам больше кода о том, как вы создаете 'HubConnection' и 'IHubProxy' –
Привет, Майкл. Я добавил код выше – GAG
Хорошо, обычно это должно работать. Проверьте, являются ли 'n' и' i' оба типа 'int'. Кроме того, перегрузите метод «Задача OnConnected» в «TheHub» и проверьте, добавив точку останова, если после 'hubConnection.Start()' удаляется brakepoint. –