«.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 »неопределенного» или нулевая ссылка