2

そのため、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 要求はまったくありません。私たちは何を間違っていますか?

Web リクエストなし

4

2 に答える 2

2

この問題を確認してみてください: https://github.com/SignalR/SignalR/issues/328

于 2012-04-26T16:18:28.283 に答える
1

解決

jquery.signalR.js で、すべての

$.ajax(url, {options});

$.ajax({ url: url, other options...});
于 2012-04-27T06:15:01.430 に答える