Сигнал R $.connection.chatHub не определен в моем файле javascript

«.chatHub» не определен при загрузке страницы после того, как я переместил весь код signal r в пакет, который загружается на каждой странице.

Я успешно установил singal r и могу отправлять сообщения чата от одного пользователя другому на своем сайте Asp.Net MVC. Но документация MS показывает реализацию только для одной страницы, теперь я хочу отправить сообщение другому пользователю на другой странице.

Поэтому я переместил код подключения/инициализации концентратора javascript в файл с именем my-chat.js, который загружается на каждой странице, и я поместил файл signal r js и ссылку на концентраторы signal r в пакет, подобный этому.

bundles.Add(new ScriptBundle("~/bundles/my-base").Include(
                  "~/Scripts/jquery.signalR-2.3.0.min.js",
                  "~/signalr/hubs",
                  "~/Scripts/my-base/my-chat.js"));

и на моей странице макета он загружается в правильном порядке, например

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/my-base")
@RenderSection("scripts", required: false)

но когда я загружаю главную/первую страницу, вызывается my-chat.js

область.initializeHub()

это выглядит так, а чат-хаб $.connection.chatHub не определен

scope.initializeHub = function () {
    $(function () {
        var chat = $.connection.chatHub;

        chat.client.addNewMessageToPage = function (message) {
            // do stuff
        };
        $.connection.hub.start().done(function () {
            $('#sendmessage').click(function () {
                chat.server.send(scope.userId, $('#message').val());
            });
        });
    });
};

Это правильный способ сделать это и, возможно,

"~/сигнал/хабы"

в комплекте не туда, куда я должен положить его?

Я также пытался поставить

<script src="/signalr/hubs" type="text/javascript"></script>

и

<script src="~/signalr/hubs" type="text/javascript"></script>

в разделе заголовка моей страницы макета, но это не сработало, возникла ошибка с сообщением «невозможно получить свойство« сигнал R »неопределенного» или нулевая ссылка


person user1186050    schedule 31.10.2018    source источник


Ответы (1)


Я решил эту проблему, переместив файлы сигнала R и все, что с ними связано, из пакета и поместил все это ниже последней области «@Scripts.Render()» в моем макете.

person user1186050    schedule 31.10.2018