如何在生产中部署Blazor服务器并克服信号器重新连接问题?

如何在生产中部署Blazor服务器并克服信号器重新连接问题?,blazor,blazor-server-side,Blazor,Blazor Server Side,Blazor服务器是一项非常棒的技术,但它经常中断,Signal无法重新连接到服务器 如何在生产中解决这个问题?我让人们把笔记本电脑放在睡梦中,或者把手机放在网站上5秒钟,而不是“尝试重新连接” 而且总是失败。用户正在等待“重新加载”按钮 Hot解决此问题并强制重新连接Signal,即使该网站在移动浏览器或休眠pc的浏览器中未处于活动状态?概述 Blazor内置了用于定制启动过程的选项,但它们并没有很好的文档记录 据我所知,情况就是这样: 但是,还有更多选项,包括设置重新连接选项的功能 样品 在

Blazor服务器是一项非常棒的技术,但它经常中断,Signal无法重新连接到服务器

如何在生产中解决这个问题?我让人们把笔记本电脑放在睡梦中,或者把手机放在网站上5秒钟,而不是“尝试重新连接”

而且总是失败。用户正在等待“重新加载”按钮

Hot解决此问题并强制重新连接Signal,即使该网站在移动浏览器或休眠pc的浏览器中未处于活动状态?

概述 Blazor内置了用于定制启动过程的选项,但它们并没有很好的文档记录

据我所知,情况就是这样:

但是,还有更多选项,包括设置重新连接选项的功能

样品 在下面的代码示例中,我设置了maxRetries和RetryIntervalMiscells(第48/49行)——它们定义了在通信中断时客户端尝试重新连接的积极程度

我还配置了一个自定义的重新连接处理程序(第51行),该处理程序具有一个最小的实现,该实现将尝试重新连接(不显示任何UI),如果所有尝试都失败,它将只重新加载页面

这不是一件特别聪明的事情,但它可以作为一个示例来演示如何定制流程

进一步阅读

**请不要在生产中使用此样品-它只是说明性的**

首先,使用
autostart=“false”

然后,您可以提供自己的连接处理程序和设置

异步函数connectionDown(选项){
log(“连接断开-你可以在这里做一些UI…”);
for(设i=0;isetTimeout(resolve,durationmillides));
}
函数连接(e){
//重新连接
log(“连接启动!”);
//如果您有要隐藏/更改的UI,您可以在此处执行此操作。
}
window.Blazor.start({
重新连接选项:{
最大重试次数:30次,
重试间隔毫秒数:500,
},
重新连接处理程序:{
onConnectionDown:e=>connectionDown(e),
onConnectionUp:e=>connectionUp(e)
}
});

你好!非常感谢你用一个例子给出了很好的答案!这会很有帮助的!当我试图实现我自己的重新连接时,我想知道,blazor团队不是编写了他们自己的重新连接代码,因为某些原因中断了吗?我的意思是,我怀疑他们有你写的东西,有重新连接和页面重新加载。但由于某些原因,他们的代码总是无法重新连接。1-2秒钟内没有互联网,blazor服务器端js已死亡,无法连接。就好像它不认识服务器之类的东西,忘记了它。我将尝试编写和调试我自己的代码,虽然有重新连接的代码,但它不会自动重新加载。服务器端也有关于电路在处理之前可以断开多长时间的设置。您是否碰巧知道可以在blazor服务器中的何处配置?在Startup.cs中的某个地方?是的,我认为最好的链接是这样,因为它解释了任何更改的安全含义:如果您可以为这个用例添加最佳实践,那将非常好,因为这显然不适合生产。帮自己一个忙,使用Blazor Webassembly。它从2020年5月开始投入生产,3.2.0版,.NET Core 3.1Blazor WebAssembly非常好,但并不适合所有可能的使用情况。