标签:
SignalR 搭建实时刷新应用虽然非常方便,但是有个问题你必须考虑到,就是一般的浏览器,对于SignalR的全双工通信方式,绝大多数浏览器都只支持6个新窗口,如果你打开第7个,那么新的框口页面是不会加载的。
这其实是客户端浏览器的限制,这是以连接的域名为单位来限制, 如果是最新版本的IE似乎没有这个限制,但是其他浏览器似乎都会存在,可以查看 browserscope 查看具体情况。
如果你使用WebSockets的传输方式是不会有这个限制,如果有限制就证明你不是使用的WebSockets传输方式,但是WebSockets传输服务器需要一定的限制,关于限制你可以查看SignalR平台配置要求。
对于用户你永远都不会知道是否会打开多余6个的浏览器窗口,对于这种情况只有下面几个解决方法:
- 不管这个问题,当然这会带来一定几率的用户体验。
- 选择合适的传输方式,解决SignalR连接数的限制,比如使用WebSockets传输方法。
- 使用其他第三方商家的解决方案。
-
观察用户浏览器窗口的打开数目
- 限制连接数
- 监控激活的连接
-
通过使用多用域名来绕过这个问题,因为的6个连接的限制是针对每个域名。
我们来分析下解决方案
不管SignalR连接数限制
你需要思考的是谁会打开6个以上的浏览器框口?如果是一个聊天室应用或者单页面应用完全就可以忽略SignalR连接数限制。
选择合适的传输方式
只有使用WebSockets的传输方式才不会有连接数的限制,即时是在老的浏览器也不会造成浏览器崩溃的情况。
使用第三方专业方案解决SignalR连接数限制
使用一些第三方专业的解决即时通信的问题,比如可以使用 http://www.lightstreamer.com/。这个连接最大可以支持到2000万个
通过使用多个域名解决SignalR连接数限制
SignalR浏览器的连接限制只是针对一个域名,所以我们可以通过域名来解决:
- 使用另外的域名(你需要解决跨站请求伪造)。
-
使用二级域名(如果你的网站的是HTTPS请求,最好使用泛域名SSL证书)。
以上就是SignalR 站点浏览器连接数限制分析及解决方案,你需要针对你的实际情况选择合适的方法来解决。
标签: 来源: https://blog.csdn.net/lzkqcc/article/details/82905131
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。