Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “信号器网箱”;“连接”;尝试重新连接后状态花费的时间太长_C#_Reactjs_Asp.net Core_Websocket_Signalr - Fatal编程技术网

C# “信号器网箱”;“连接”;尝试重新连接后状态花费的时间太长

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

我有一个非常简单的.NETCore3.1应用程序,用于测试在signalR上启动连接。这是我在前端中启动连接的函数

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分钟?