C# “信号器网箱”;“连接”;尝试重新连接后状态花费的时间太长
我有一个非常简单的.NETCore3.1应用程序,用于测试在signalR上启动连接。这是我在前端中启动连接的函数C# “信号器网箱”;“连接”;尝试重新连接后状态花费的时间太长,c#,reactjs,asp.net-core,websocket,signalr,C#,Reactjs,Asp.net Core,Websocket,Signalr,我有一个非常简单的.NETCore3.1应用程序,用于测试在signalR上启动连接。这是我在前端中启动连接的函数 const App: React.FC = () => { const connection = new signalR.HubConnectionBuilder() .withUrl("/hub") .configureLogging(signalR.LogLevel.Trace) .build(); connecti
const App: React.FC = () => {
const connection = new signalR.HubConnectionBuilder()
.withUrl("/hub")
.configureLogging(signalR.LogLevel.Trace)
.build();
connection.start().catch(err => document.write(err));
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
这是我的后端代码
public class Startup
{
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/hub");
});
app.UseSpa(spa =>
{
spa.UseProxyToSpaDevelopmentServer("http://localhost:3000");
});
}
}
公共类启动
{
//此方法由运行时调用。请使用此方法将服务添加到容器中。
//有关如何配置应用程序的更多信息,请访问https://go.microsoft.com/fwlink/?LinkID=398940
public void配置服务(IServiceCollection服务)
{
services.AddSignalR();
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseEndpoints(端点=>
{
endpoints.MapHub(“/hub”);
});
app.UseSpa(spa=>
{
spa.UseProxyToSpadDevelopmentServer(“http://localhost:3000");
});
}
}
当我第一次加载或在刷新应用程序之前等待大约2分钟时。它立即连接。下面是我得到的日志示例:
[2020-01-07T16:53:23.217Z]调试:选择传输“WebSocket”
[2020-01-07T16:53:23.218Z]跟踪:(WebSocket传输)连接
[2020-01-07T16:53:23.531Z]信息:WebSocket已连接到wss://localhost:44344/hub?id=6pXMScFZez-Vv72C73Etfw
但当我刷新浏览器时,它仍处于“连接”状态,大约2分钟后它终于连接了。以下是本例中的日志示例:
[2020-01-07T16:53:49.069Z]调试:选择传输“WebSocket”
[2020-01-07T16:53:49.070Z]跟踪:(WebSocket传输)连接
[2020-01-07T16:55:25.574Z]信息:WebSocket已连接到wss://localhost:44344/hub?id=BPT4DkdPVgBj-nkOarAyNQ
问题:
信号机上是否有任何配置可用于避免重新连接前的等待?(这种情况只在.Net Core 3.1上发生,以前的版本从未出现过这种问题)
谢谢。您正在询问是否有方法,例如,在连接过程中仅等待15秒,然后在15秒过后再次尝试重新连接?Hi@Kiril1512,事实上没有。我在询问如何配置signalrR以避免第二个日志上显示的“连接”时间。这一次总是在2分钟左右,但在第一次连接(第一次日志上显示的连接)时从未发生过。这绝对不正常,信号员不应该做任何事情来造成这种情况。我无法用非React应用程序重现这一点。是否可以获取服务器日志和网络跟踪,以了解为什么连接需要2分钟?