SignalR 在某些限制后未处理请求。即使在相同或不同机器上的其他浏览器中,选项卡仍会加载
Posted
技术标签:
【中文标题】SignalR 在某些限制后未处理请求。即使在相同或不同机器上的其他浏览器中,选项卡仍会加载【英文标题】:SignalR not handling requests after some limit.Tabs remains loading even to other browser on same or different machine 【发布时间】:2019-07-23 09:36:00 【问题描述】:当 SignalR 实现域的浏览器上的选项卡数量增加时。在一些选项卡限制后,选项卡仍然旋转。
从一些研究说这是浏览器的限制。链接是:
https://medium.com/yasser-shaikh/multiple-tab-issue-with-signal-r-9df76c1ffba0 https://github.com/SignalR/SignalR/issues/2744 https://github.com/SignalR/SignalR/issues/849 SignalR, Limited unique connections (opened tabs) IIS8, Windows8但是当我尝试从不同的机器或不同的浏览器浏览来自同一域的任何 url 时,选项卡也在它们上旋转。一旦我关闭了第一个浏览器的一些选项卡,其他机器选项卡就会开始工作。
请帮忙
谢谢
【问题讨论】:
【参考方案1】:您分享的链接已经描述了问题并提供了答案。
例如“使用本地存储作为选项卡之间的消息总线”。这应该可以解决问题。为此,如果您想减少工作量,您可以从此处使用 IWC-SignalR 库:https://github.com/slimjack/IWC-SignalR。 示例代码如下:
var echoHub = SJ.iwc.SignalR.getHubProxy('echo',
client:
displayMsg: function (msg)
console.log(msg);
);
SJ.iwc.SignalR.start().done(function ()
console.log('started');
echoHub.server.send('test').done(function ()
console.log('sent');
);
);
这里集线器Echo
使用在服务器上定义的方法Send
。方法 Send 调用所有客户端的方法displayMsg
。
那么这里是displayMsg
方法:
var echoHub = SJ.iwc.SignalR.getHubProxy('echo',
client:
displayMsg: function (msg)
console.log(msg);
);
echoHub.server.send('test');
完整的实现和描述可在上述链接中找到。
【讨论】:
是的,我已经探索了您提到的解决方案。并且也应用了它。现在我可以在我的机器上打开多个标签。但是,当我在我的上加载多个标签时。它将阻止其他机器上的所有其他用户。在我关闭我的标签之前,他们将只能浏览这些 URL。【参考方案2】:是的,我已经探索了您提到的解决方案。并且也应用了它。现在我可以在我的机器上打开多个标签。但是,当我在我的上加载多个标签时。它将阻止其他机器上的所有其他用户。在我关闭我的标签之前,他们将只能浏览 URL。当被任何用户浏览器阻止时,它正在阻止阻止服务器
【讨论】:
以上是关于SignalR 在某些限制后未处理请求。即使在相同或不同机器上的其他浏览器中,选项卡仍会加载的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用 SignalR 在所有客户端上触发 AJAX 请求吗?
.Net SignalR 在还配置了 Cookie 身份验证时使用 JWT 承载身份验证
Windows 10 Home/Pro/Enterprise 上的 IIS 并发请求限制