'. ChatHub' не определен при загрузке страницы после того, как я переместил весь код сигнала r в пакет, который загружается на каждой странице
Я успешно установил singal r и могу отправлять сообщения чата от одного пользователя другому на моем сайте Asp.Net MVC. Но документация MS показывает реализацию только для одной страницы, теперь я хочу отправить сообщение другому пользователю на другой странице.
Поэтому я переместил код подключения / инициализации javascript-хаба в файл с именем my-chat.js, который загружается на каждую страницу, и поместил файл signal r js и ссылку на 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 вызывает
scope.initializeHub ()
выглядит так, а ChatHub в $ .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());
});
});
});
};
Это правильный способ сделать это и, возможно,
"~ / signalr / концентраторы"
в пачке - это не то место, куда я должен ее положить?
Я тоже пытался поставить
<script src="/signalr/hubs" type="text/javascript"></script>
и
<script src="~/signalr/hubs" type="text/javascript"></script>
в разделе заголовка моей страницы макета, но это не сработало, из-за чего возникла ошибка: «невозможно получить proerty» signalR «undefined» или нулевая ссылка