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

Jas*_*n D 4 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)
Run Code Online (Sandbox Code Playgroud)

这个问题有解决方案吗?或者我是否需要探索移植到 Blazor 客户端?

我找到了有关此主题的以下文章,但不确定它是否可以应用于 Blazor 应用程序: SignalR 和浏览器连接限制

这有点可怕,因为我已经构建了相当多的代码,并且不想花太多时间尝试破解解决方法。

小智 5

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

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

安装后,我打开了 blazor 服务器应用程序的 20 个选项卡,每个选项卡都在不同的页面上,并且问题没有再次出现(我还对每个选项卡进行了几次刷新以确保)。

我在阅读后遇到了这个

由于较低的延迟、可靠性和安全性,Blazor 在使用 WebSockets 作为 SignalR 传输时效果最佳。当 WebSockets 不可用或应用明确配置为使用长轮询时,SignalR 会使用长轮询。

来自 Blazor 文档