Blazor Server每次使用的连接数受浏览器限制

时间:2020-09-01 18:21:34

标签: signalr blazor blazor-server-side

我正在构建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

这有点吓人,因为我已经构建了很多代码,并且不想花太多时间尝试破解解决方法。

1 个答案:

答案 0 :(得分:1)

我终于设法将其复制到我的内部网络上,现在我已经安装了WebSockets,似乎已经解决了。

  1. 打开服务器管理器
  2. 打开添加角色和功能
  3. 展开 WebServer(IIS)
  4. 扩展应用程序开发
  5. 选择 WebSocket协议

安装此工具后,我打开了blazor服务器应用程序的20个选项卡,每个选项卡都位于不同的页面上,并且没有再次出现此问题(当然,我也对每个选项卡进行了几次刷新)。

我在阅读后发现了这一点

由于将WebSockets用作SignalR传输,Blazor的工作效率最高,因为它具有较低的延迟,可靠性和安全性。当WebSockets不可用或将应用程序显式配置为使用长轮询时,SignalR将使用长轮询。

From the Blazor docs