'.chatHub' は、すべてのシグナル r コードをすべてのページに読み込まれるバンドルに移動した後、ページの読み込み時に未定義です
singal r のインストールに成功し、Asp.Net MVC サイトであるユーザーから別のユーザーにチャット メッセージを送信できます。しかし、MS のドキュメントには 1 つのページのみの実装が示されているため、別のページの別のユーザーにメッセージを送信したいと考えています。
そこで、javascript ハブの接続/初期化コードを、すべてのページにロードされる my-chat.js という名前のファイルに移動し、シグナル 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()
これは次のようになり、「$.connection.chatHub」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>
私のレイアウトページのヘッドセクションで、それはうまくいきませんでした.