【问题标题】:signalr empty connection data on my second hub我的第二个集线器上的信号器空连接数据
【发布时间】:2013-04-15 14:52:54
【问题描述】:

在过去的一年里,我有一个信号器中心,没有任何问题。 今天尝试添加第二个集线器时,它只是无法正常工作。 我按照与第一个相同的步骤进行操作,但无济于事。

这是我的 ~/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

connectiondata 对应于我在页面上初始化的集线器。 现在在我尝试使用pulsePageHub的页面上,当使用相同的connection.hub.start调用时,以下是firebug的输出(请注意这些在不同的页面上,我只有一个调用connection.start的页面)

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

我正在以与执行 errorPageHub 完全相同的方式初始化 pulseHub,但连接数据始终为空,因此它从不接收任何广播。如果我将 errorPageHub 初始化添加到此页面,则发送的唯一 connectionData 是 errorPageHub。

如何初始化第二个集线器以接收广播?这个问题与here 提出的问题非常相似,但从未解决

我的集线器是这样在客户端声明的 ::

        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");
    };

【问题讨论】:

    标签: c# signalr signalr-hub


    【解决方案1】:

    您使用的是什么版本的 SignalR?

    在开始连接之前,您需要为您感兴趣的集线器连接事件处理程序。那就是:

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

    否则将无法正常工作。

    【讨论】:

    • 它是旧版本,没有 .client 属性。我的错误页面集线器像这样初始化 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"); };
    • 无法让代码在评论中看起来不错 :( 将更新我的帖子
    • 它只是一个 js 更新还是我需要构建源并重新添加 dll 等?我们没有使用 nuget。
    • 自从 .client 属性被添加到 JS 集线器后,SignalR 发生了重大变化。 SignalR dll 和 JS 库都需要更新。
    • 今天早上更新了,现在一切都好。将此标记为正确答案,因为第一行问题我的版本。
    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多