我正在构建Blazor服务器端数据库应用程序。
我的要求之一是,用户可以在不同的标签页中打开每个网站页面。
我发现打开5个选项卡后,所有新页面都无法呈现。如果我关闭一页,则可以呈现第6页。显然,这是由于浏览器一次可以支持有限数量的SignalR连接的事实。我已经阅读过一次Chrome浏览器的限制为6个(尽管我只能使用5个)。
Chrome中的错误消息:
Error: Connection disconnected with error 'Error: Server returned handshake error: Handshake was canceled.'
Error: Error: Server returned handshake error: Handshake was canceled.
Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State.
at e.send (blazor.server.js:1)
是否有解决此问题的方法?还是我需要探索到Blazor Client的移植?
我找到了有关此主题的以下文章,但不确定是否可以将其应用于Blazor应用程序: SignalR and Browser Connection limit
这有点吓人,因为我已经构建了很多代码,并且不想花太多时间尝试破解解决方法。
答案 0 :(得分:1)
我终于设法将其复制到我的内部网络上,现在我已经安装了WebSockets,似乎已经解决了。
安装此工具后,我打开了blazor服务器应用程序的20个选项卡,每个选项卡都位于不同的页面上,并且没有再次出现此问题(当然,我也对每个选项卡进行了几次刷新)。
我在阅读后发现了这一点
由于将WebSockets用作SignalR传输,Blazor的工作效率最高,因为它具有较低的延迟,可靠性和安全性。当WebSockets不可用或将应用程序显式配置为使用长轮询时,SignalR将使用长轮询。