为什么 SignalR 在浏览器的多个选项卡中为同一登录用户建立不同的连接。
有没有一种方法可以为同一浏览器中打开的所有选项卡建立一个连接。
我所说的连接是指 SignalR 中用户的连接 ID。
因为同一浏览器的不同选项卡是不同的文档\“进程” - 每个选项卡在某种意义上代表客户端应用程序的不同“实例”。无法在它们之间直接共享 JavaScript 对象(这就是 SignalR 在每个选项卡中打开新连接的原因)。要在不同实例之间共享数据\通信,您可以使用例如 HTML5 localStorage 机制
因此,如果您想在选项卡之间共享一个 SignalR 连接,可行的方法是通过仅在一个选项卡中管理连接并允许选项卡之间的通信 https://stackoverflow.com/questions/2236828/javascript-communication-between-tabs-windows-with-same-origin/12514384#12514384以便每个选项卡都能够从服务器发送\接收消息。您可以使用或从中获得灵感这个很酷的项目 https://github.com/slimjack/IWC-SignalR正是这样做的。
这也解决了problem https://github.com/SignalR/SignalR/issues/849浏览器对单个服务器的最大并发连接数的限制。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)