【发布时间】:2012-10-12 13:12:53
【问题描述】:
我的 MVC 应用程序中有两个 SignalR 集线器,ChatHub 和 AnotherHub。 ChatHub 运行良好,但我无法连接到另一个。我知道 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 为空。我有设置回调,它只是不工作。
-
对不起,没有。我决定使用一个集线器并通过不同的方法路由。