是否允许创建到同一个集线器的两个连接?或者我应该使用相同的Hub连接吗?
var cnn1 = new signalR.HubConnection("/hub1");
cnn1.on("Method1", function(){});
cnn1.start().then(function() {cnn1.invoke("Something1");});
var cnn2 = new signalR.HubConnection("/hub1");
cnn2.on("Method2", function(){});
cnn2.start().then(function() {cnn2.invoke("Something2");});
答案 0 :(得分:3)
完全可以创建2个HubConnection
个实例。在这个简单的例子中没有理由这样做,但我确信有些情况你会想要。
旁注,您知道连接可以注册多个.on()
方法吗? cnn1.on("Method1", function(){}); cnn1.on("Method2", function(){});
答案 1 :(得分:0)
SignalR 2.0:多个集线器可以共享一个连接
是的,你可以这样做。但要注意服务器(IIS和浏览器)的限制
您可以让多个集线器在您的网站上共享一个连接。 SignalR 2.0已更新,可通过一个签名处理多个集线器 连接没有丢失性能。"
您在以下问题中找到了这个答案: Multiple signalR connections/hubs on your website
SignalR Core:不支持每个连接有多个集线器
新版SignalR不支持 每个连接有多个Hub。这导致简化 客户端API,可以更轻松地应用身份验证策略和 其他中间件到集线器连接。另外订阅hub 不再需要连接开始前的方法。
阅读有关信号器核心的更多信息: https://blogs.msdn.microsoft.com/webdev/2017/09/14/announcing-signalr-for-asp-net-core-2-0/
注:
一旦我开始使用signalr 2.0的应用程序,我还计划使用多个连接。但我有一些奇怪的效果,因为浏览器的限制。浏览器确实限制了并列连接的数量。也许这不是一个用例,你在同一个浏览器上打开了多个浏览器实例,但你应该知道这是背景。 如果打开SAME浏览器类型的10个实例,则可以对此进行测试。然后您可以看到并非所有实例都会创建连接。