0

過去1年間、問題なく動作するシグナルハブが1つありました。今日、2 つ目のハブを追加しようとすると、機能しません。最初の手順と同じ手順を実行しましたが、役に立ちませんでした。

これが私の ~/signalr/hubs の出力です

 // Create hub signalR instance
$.extend(signalR, {
    errorPageHub: {
        _: {
            hubName: 'Web.Infrastructure.Logging.Broadcasting.ErrorPageHub',
            ignoreMembers: ['error', 'event', 'warning', 'success', 'namespace', 'ignoreMembers', 'callbacks'],
            connection: function () { return signalR.hub; }
        },

        error: function (error, callback) {
            return serverCall(this, "Error", $.makeArray(arguments));
        },

        event: function (eventDescription, callback) {
            return serverCall(this, "Event", $.makeArray(arguments));
        },

        warning: function (warning, callback) {
            return serverCall(this, "Warning", $.makeArray(arguments));
        },

        success: function (success, callback) {
            return serverCall(this, "Success", $.makeArray(arguments));
        }
    },
    pulsePageHub: {
        _: {
            hubName: 'Web.Infrastructure.Logging.Broadcasting.PulsePageHub',
            ignoreMembers: ['tenderAdded', 'tenderUpdated', 'projectAdded', 'projectUpdated', 'namespace', 'ignoreMembers', 'callbacks'],
            connection: function () { return signalR.hub; }
        },

        tenderAdded: function (message, callback) {
            return serverCall(this, "TenderAdded", $.makeArray(arguments));
        },

        tenderUpdated: function (message, callback) {
            return serverCall(this, "TenderUpdated", $.makeArray(arguments));
        },

        projectAdded: function (message, callback) {
            return serverCall(this, "ProjectAdded", $.makeArray(arguments));
        },

        projectUpdated: function (message, callback) {
            return serverCall(this, "ProjectUpdated", $.makeArray(arguments));
        }
    }
});

呼び出し時に「errorPageHub」を使用して自分のページで

$.connection.hub.start({ transport: 'longPolling' }, function () {
        console.log('connection started!');
    });

以下はfirebugへの出力です::

connectionData  [{"name":"Web.Infrastructure.Logging.Broadcasting.ErrorPageHub","methods":["addError","addSuccess","addWarning","addEvent"]}]
connectionId    1806c3f7-e2e0-4ec7-9eb1-670a43fac912
transport   longPolling

接続データは、私のページで初期化しているハブに対応しています。現在、pulsePageHub を使用しようとしているページで、同じ connection.hub.start 呼び出しを使用すると、以下が firebug に出力されます (これらは別のページにあることに注意してください。ページで connection.start への呼び出しは 1 つしかありません)。

connectionData  []
connectionId    05b2354d-63ac-469a-bf0b-bd4e06e56426
transport   longPolling

errorPageHub を実行しているのとまったく同じ方法で pulseHub を初期化していますが、接続データは常に空であるため、ブロードキャストを取得することはありません。このページに errorPageHub の初期化を追加すると、送信される唯一の connectionData は errorPageHub です。

この 2 番目のハブを初期化してブロードキャストを受信するにはどうすればよいですか? この質問はここで提起されたものと非常に似ていますが、解決されませんでした

私のハブはクライアント側で次のように宣言されています::

        var error = $.connection.errorPageHub;

    error.addError = function (message) {
        appendMessage(message, "error");

    };

    error.addSuccess = function (message) {
        appendMessage(message, "info");
    };

    error.addWarning = function (message) {
        appendMessage(message, "warning");
    };


    error.addEvent = function (message) {
        appendMessage(message, "info");
    };
}

そして私のパルスページハブは次のようになります:

  var pulse = $.connection.pulsePageHub;

    pulse.tenderAdded = function (message) {
        appendMessage(message, "info");
        alert("hi");
    };

    pulse.tenderUpdated = function (message) {
        appendMessage(message, "warning");
        alert("hi");
    };

    pulse.projectAdded = function (message) {
        appendMessage(message, "info");
        alert("hi");
    };

    pulse.projectUpdated = function (message) {
        appendMessage(message, "warning");
        alert("hi");
    };
4

1 に答える 1

5

どのバージョンの SignalR を使用していますか?

接続を開始する前に、関心のあるハブのイベント ハンドラーを接続する必要があります。あれは:

hub.client.something = function() { };

それ以外の場合は機能しません。

于 2013-04-15T14:56:56.603 に答える