signalR核心开放连接两次

时间:2018-01-22 12:58:52

标签: asp.net-core signalr asp.net-core-signalr

是否允许创建到同一个集线器的两个连接?或者我应该使用相同的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");});

2 个答案:

答案 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个实例,则可以对此进行测试。然后您可以看到并非所有实例都会创建连接。