У нас есть метод обратного вызова клиента SignalR, который вызывается столько раз, сколько мы отходим от него и возвращаемся на его содержащую страницу. Например: страница salesUpdate.html (Угловой шаблон), на этой странице при первом входе вызов будет выполняться один раз на событии. Теперь, когда мы отодвинемся от этой страницы на другую страницу (скажем, purchaseUpdate.html) и вернемся на эту страницу, то есть salesUpdate.html, этот метод обратного вызова клиента SignalR будет выполняться дважды. Он будет выполняться столько раз, сколько мы удаляемся от страницы и возвращаемся к нему. С сервера этот метод вызывается из веб-API ASP.NET, а веб-интерфейс запускается только один раз, все последующее выполнение обратного вызова не затрагивает веб-API. Вот клиент обратного вызова метода:Метод callback обратного вызова SignalR, вызываемый несколько раз
var con;
var apiMsgProxy;
$(document).ready(function() {
con = $.hubConnection('http://localhost:51123/signalr');
apiMsgProxy = con.createHubProxy('salesHub');
apiMsgProxy.on('SendSaleUpdate', function (uMsg) {
console.log("Call back SendSaleUpdate called - " + uMsg);
});
con.start().done(function() {
console.log("SignalR connection opened - " + con.state);
}).fail(function() {
console.log('Could not Connect SignalR hub!');
});
});
Любой указатель в этом направлении будет весьма признателен.
Где в вашем угловом приложении создается соединение концентратора? Это в контроллере или службе или что-то еще? – lintmouse
Это в jQuery '$ (document) .ready()' в блоке сценария HTML-страницы, где он открывает соединение с концентратором и создает прокси-сервер. Это не в контроллере/сервисе Angular app. – viking
Можете ли вы подтвердить, что вы попали в событие «Повторное подключение» (n-1 раз)? Возможно, проверьте «ConnectionId». – rdoubleui