0

ASP.NETWebサイトにSignalrを使用した簡単なプロジェクトがあります。接続ハブの開始のコード:

var scriptStarted = 'var myHub = $.connection.' + hubName + ';' + methodNameInitHub + '(myHub);';
$.connection.hub.error(function () {
    alert("An error occured");
});

$.connection.hub.start()
                        .done(function () {
                            eval(scriptStarted);
                            myHub.server.registerClient($.connection.hub.id, clientIdentifier);
                        })
                        .fail(function () { alert("Could not Connect!"); });

このメソッドは、「methodNameInitHub +'(myHub);」で呼び出されます。

function methodInitEventHub(hub) {
            if (hub) {
                hub.client.addEvent = function (eventOperationName, eventType) {
                    $("#events").append("<li>" + eventOperationName + ", " + eventType + "</li>");
                };
            }
        }

接続停止ハブのコード:

$.connection.hub.stop();

.aspxページをロードしてハブを起動すると、すべてのコードがエラーなしで実行されますが、サーバーからのイベントが受信されません。クライアント(ブラウザ)で受信を開始するハブ接続イベントを停止して再開した後 http://clip2net.com/s/2CP2e

サーバーから受信したイベントを開始するために接続ハブを再起動する必要があるのはなぜですか?ありがとう。

4

1 に答える 1

1

問題が発生している理由は、startを呼び出す前に少なくとも1つのクライアント側ハブ機能が必要であるためです。そうでない場合、ハブにサブスクライブされません。

やってみてください

myHub.client.foo = function() {}

開始する前に。

接続を停止してから再開した後に機能する理由は、スクリプトが新しいクライアントメソッドをバインドするため、接続を再開した後にハブにサブスクライブできるようになるためです。

お役に立てれば!

于 2012-12-20T19:20:56.920 に答える