2

ASP.Net WebアプリケーションプロジェクトでSignalRを使用していますが、問題が発生しています。私の目標は、サイトの管理側に変更を加えて、一部のGridViewを更新することです。これを行うには、JavaScriptを実行するためのシグナルを送信し、それによってGridViewを含む更新パネルを更新することを計画していました。

現在の問題は、ハブがクライアントで実行するために呼び出そうとしているコードを取得できないことです。jquery.SignalR.jsファイルからFireBugで次のエラーを受け取りましたが、修正方法がわかりません。

Firefox can't establish a connection to the server at ws://localhost:40068/signalr?data=[]&transport=webSockets&clientId=92e4f7b9-0118-4fd9-bb55-5f22338d6162.

(function(n,t){"use strict";if(typeof ...on=n.signalR=i})(window.jQuery,window)

このエラーをスローした後も、接続を設定しているように見えますが、ハブを介して送信されているJavaScriptは実行されません。

私のサイトには次のハブを設定しました。

namespace testProject
{
    public class statusChanges : Hub
    {
        public void ServerChange()
        {
            Clients.serverChange();

        }
    }
}

管理セクションのボタンクリックイベントに次のコードがあります。デバッグは、このコードがサーバーによって実行されていることを示しています。

var clients = Hub.GetClients<statusChanges>();
clients.serverChange();

最後に、このコードがページにあり、シグナルを受信したときにアラートを起動して、動作していることを確認しようとしています。

<script type="text/javascript">
    $(function () {
        var statusChange = $.connection.statusChanges;
        statusChange.serverChange = function () {
            alert(8);
        };
        $.connection.hub.start();
    });
</script>

なぜこれが実行されないのか、またはFireBugエラーが何を意味するのかを誰かが知っていますか?

4

1 に答える 1

5

firebug のエラーが予想されます。これは websocket 接続の失敗です。SignalR は longpolling にフォールバックするため、心配する必要はありません。クライアント側のイベントと同じ名前のメソッドがサーバー側にあります。それはうまくいきません。

次のようなものが必要です。

public Administration : Hub {
}

イベント ハンドラー:

var clients = Hub.GetClients<Administration>();
clients.serverChange();

Javascript:

<script type="text/javascript">
    $(function () {
        var administration= $.connection.administration;
        administration.serverChange = function () {
            alert(8);
        };
        $.connection.hub.start();
    });
</script>
于 2011-11-02T22:31:32.037 に答える