Клиентские функции SignalR не вызываются - PullRequest
0 голосов
/ 10 мая 2018

Итак, у меня есть веб-приложение, работающее на signalR, и я использую только один HTML-код со статическим заголовком и нижним колонтитулом и просто div для динамического изменения содержимого страницы.Одна из вкладок, которая загружается в div, загружает файл js с подключением signalR к концентраторам, все работает нормально, файл js прослушивает события и запускает методы на стороне сервера, но проблема заключается в том, что сервер не вызывает функции клиента в jsфайл.Идентификаторы подключения совпадают, и он успешно подключен к клиенту, но не выполняет функции.Другой js-файл, который я использую для аутентификации пользователя, не добавляется динамически и работает просто отлично.

Метод хаба, который вызывается правильно:

public void ClientCall()
{
        IHubContext context;
        context = GlobalHost.ConnectionManager.GetHubContext<LdServiceHub>();
        context.Clients.Client(this.Context.ConnectionId).callbackMethod("50");
}

клиентская функция js, которая не запускается:

$.connection.ldServiceHub.client.callbackMethod = function (item) {
console.log(item);}

и вот как я загружаю файл signalR в пустой div:

var script = document.createElement('script');
script.src = 'Scripts/SignalRConnection.js';
script.type = 'text/javascript';
maindiv.appendChild(script);

он загружается правильно и правильно подключается, правильно запускает функцию концентратора, но никогда не получает вызов от сервера и процедурклиентская функция.

Имейте в виду, что сценарий добавляется в DOM динамически, и приведенный выше код является лишь фрагментом кода, поскольку используемый мной код src содержит много несвязанных вещей.Спасибо

РЕДАКТИРОВАТЬ: думал, что я должен упомянуть, что я использую собственный хост Owin для размещения соединения, все отлично работает в файле js аутентификации пользователя, единственное различие между этими двумя заключается в том, что второй динамически добавляется в html

1 Ответ

0 голосов
/ 10 мая 2018

Проблема была в порядке загрузки файлов, я загружал html сначала в div, а затем в js, но js работал и слушал события и отправлял запросы на сервер, но никогда не получал никакого вызова от сервера. Отмечено: порядок загрузки очень важен для js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...