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

Posted

技术标签:

【中文标题】Blazor Server 每次使用的连接数受浏览器限制【英文标题】:Blazor Server # of connections per use is limited by the browser 【发布时间】:2020-12-20 21:41:43 【问题描述】:

我正在构建 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 客户端?

我找到了有关此主题的以下文章,但不确定它是否可以应用于 Blazor 应用程序: SignalR and Browser Connection limit

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

【问题讨论】:

我刚刚在我的内部网络上运行了 10 个选项卡并访问了不同的页面以确保查询仍然有效 - 一切都很好。我正在运行 Google Chrome 84.0.4147.135,该站点托管在 IIS10 上。你的配置是什么? 我在 Windows 10 客户端上运行 Chrome 84.0.4147.105。我也看到了与 Firefox 相同的问题。服务器是在 Server 2016 上运行的 IIS 10 奇数。当它不呈现时,它会返回一个 HTTP 错误吗?开发工具显示什么? DGrowns,只是检查您使用的是 Blazor 服务器还是 wasm? Blazor 服务器,我们需要 Windows 身份验证,所以 wasm 不适合我们。 【参考方案1】:

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

    打开服务器管理器 打开添加角色和功能 展开WebServer (IIS) 展开应用开发 选择 WebSocket 协议

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

读完后发现

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

From the Blazor docs.

【讨论】:

DGrowns 你就是男人!我按照你的建议试过了,效果很好。非常感谢!!!

以上是关于Blazor Server 每次使用的连接数受浏览器限制的主要内容,如果未能解决你的问题,请参考以下文章

一文说通Blazor for Server-Side的项目结构

定时器停止更新页面的 Blazor Server 问题

另一个项目中具有本地化资源的 Blazor Server-Size

Blazor 性能

Blazor MS SQL Server:用户登录失败/管道错误结束时没有进程

更新页面时出现 Blazor Server System.ObjectDisposedException 问题