【问题标题】:SignalR ConnectionData empty, and won't connectSignalR ConnectionData 为空,并且不会连接
【发布时间】:2012-10-12 13:12:53
【问题描述】:

我的 MVC 应用程序中有两个 SignalR 集线器,ChatHubAnotherHubChatHub 运行良好,但我无法连接到另一个。我知道 SignalR 识别出 AnotherHub 存在,因为我在 /signalr/hubs 中获得了以下 JavaScript:

signalR.chatHub = {
    _: {
        hubName: 'ChatHub',
        ignoreMembers: ['post'],
        connection: function () { return signalR.hub; }
    },

    post: function (room, message) {
        return invoke(this, "Post", $.makeArray(arguments));
    }
};

signalR.anotherHub = {
    _: {
        hubName: 'AnotherHub',
        ignoreMembers: ['doSomething'],
        connection: function () { return signalR.hub; }
    },

    doSomething: function (thing) {
        return invoke(this, "DoSomething", $.makeArray(arguments));
    }
};

在聊天页面上,Fiddler 在与/signalr/signalr/connect 连接时告诉我以下内容:

connectionData      [{"name":"chathub"}]
tid                 10

但是,当尝试连接到 anotherHub 时,Fiddler 说:

connectionData      []
tid                 3

我在聊天页面上的javascript:

        cn = $.connection.chatHub;
        $.connection.hub.start();

在另一个页面上:

        cn = $.connection.anotherHub;
        $.connection.hub.start();

现在,一件奇怪的事情;当我在另一个页面上将anotherHub 更改为chatHub 时,连接有效。当我在聊天页面上将chatHub 更改为anotherHub 时,这也有效。唯一没有的组合是另一页上的anotherHub。 (我已经通过集线器构造函数上的服务器端断点确认了这一点,并检查了 Fiddler 的 ConnectionData 参数)。有什么想法吗?

【问题讨论】:

  • 如果你没有在 anotherHub 上注册任何回调,connectionData 将为空。
  • 如果我在另一个页面上使用chatHub,它可以工作,反之亦然,我该怎么办?
  • 您找到解决方案了吗?我有同样的错误。我有 2 个集线器,但第二个集线器上的 connectionData 为空。我有设置回调,它只是不工作。
  • 对不起,没有。我决定使用一个集线器并通过不同的方法路由。

标签: c# signalr


【解决方案1】:

您确定在另一个页面上引用了所有相同的 JS 库(尤其是 /signalr/hubs)吗?

【讨论】:

  • 是的,非常确定。我可以连接到另一个页面上的chatHub,但不能连接到anotherHub
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多