10

无法使用 SignalR,当打开多个选项卡并分配给每个选项卡的唯一 ID 时(请参阅。当 SignalR 一次建立 8-10 个连接时,实时聊天不起作用)。

但。我在此 stackoverflow 问题中描述了一种解决方法。这个想法是按顺序覆盖connectionid,每个打开的选项卡都将具有相同的连接ID:因此,从逻辑上讲,在我的特定情况下,没有理由为每个选项卡设置唯一的ID,因为每个选项卡都由一个MyApplicationUserId打开.

无论如何,在stackoverflow中已经注意到(参见SignalR How is a duplicate Connection Idhandled?),该connectionid必须是唯一的。他们说,IConnectionIdGenerator 将在即将发布的版本中删除。

所以,这是一种死胡同。我必须使用唯一的 ID,但我不能在打开多个浏览器选项卡的情况下使用 SignalR。

谢谢你。德米特里。

4

3 回答 3

12

正如您在此处打开的 SignalR 问题中所讨论的那样,大多数现代浏览器都会限制到同一站点的最大并发连接数(通常约为 6 个)。

一种解决方法是使用子域,即每个选项卡连接到不同的子域(这是 Facebook 使用的方法)。另一种选择是仅启动一个连接并localStorage用作选项卡之间的消息总线,正如 FreshCode 在此问题中所建议的那样:SignalR and Browser Connection limit

于 2012-10-23T19:02:58.577 回答
1

要绕过浏览器限制,您可以使用‛localStorage‛ 在窗口之间进行通信,并且只有一个窗口作为连接所有者。在这种情况下,其他窗口使用连接所有者来接收/发送消息。IWC-SignalR是这种方法的一种实现。

于 2015-05-07T11:34:50.767 回答
0

是的。您将为信号 R 连接创建动态子域,因为并发请求 [max = 8] 存在浏览器限制,并且对于不同的浏览器,此并发限制可能会有所不同。

对于动态子域,您需要从主机面板为子域设置 DNS,因此这些动态子域指向您的主域。例如 xyz.com 是您的主域,abc1.xyz.com 是您的子域,abc2.xyz.com 是您的子域,abc3.xyz.com 是您的子域,abc4.xyz.com 是您的子域-领域。这些子域在DNS设置和IIS设置后都指向主域。这同样适用于聊天应用程序。祝你好运...

于 2014-11-19T06:45:53.567 回答