そのため、signalR を使用したメッセージング システムを実装しています。最新バージョンの Nuget には signalR が含まれています。アプリケーションは IIS 7 でホストされています。すべての URL 書き換えルールを無効にしました。
ハブを使用しています。次のコードを参照してください。
[HubName("messages")]
public class Messages : Hub
{
public void Send(string message)
{
Clients.showPopUp(message);
}
}
ビュー内のインクルード ファイル:
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.signalR.js")" type="text/javascript"></script>
<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/Messages/Messages.js")" type="text/javascript"></script>
Messages.js の内容:
$(function () {
var messages = $.connection.messages;
messages.showPopUp = function (message) {
console.log("test");
};
$.connection.hub.start(function () {
console.log('connected');
});
});
メッセージが送信されたときに呼び出されます:
$.connection.messages.send($('#Body').val());
つまり、Google Chrome コンソールにエラーはなく、シグナルに対する xhr リクエストもありません。
が存在するかどうかを確認しましたが、存在し、次の json/signalr/hubs
も返します。/signalr/negotiate
{"Url":"/agenda/signalr","ConnectionId":"a4215b26-32f1-4a52-bf6d-4de096298a07","TryWebSockets":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.0"}
send を呼び出すと、コンソールに次のように表示されます。
キャッチされていない SignalR: データを送信する前に、接続を開始する必要があります。.send() の前に .start() を呼び出す
signalR をデバッグすると、start が呼び出されたことがわかりますが、jQuery ajax 呼び出しのエラーや成功は発生せず、xhtml 要求はまったくありません。私たちは何を間違っていますか?