Состояние «Соединение» WebSocket SignalR занимает слишком много времени после попытки повторного подключения - PullRequest
0 голосов
/ 07 января 2020

У меня действительно простое. Net Приложение Core 3.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");                

            });


        }
    }

Когда я впервые загружаюсь или когда я жду около 2 минут перед refre sh приложением. Подключается сразу. Вот пример журнала, который я получаю:

[2020-01-07T16: 53: 23.217Z] Отладка: Выбор транспорта 'WebSockets'.

[ 2020-01-07T16: 53: 23.218Z] Трассировка: (транспорт WebSockets) Подключение.

[2020-01-07T16: 53: 23.531Z] Информация: подключен WebSocket to wss: // localhost: 44344 / hub? id = 6pXMScFZez-Vv72C73Etfw.

Но когда я обновляю sh браузер, он остается в состоянии «подключения» и примерно через 2 минуты он наконец соединяет. Вот пример журнала в этом случае:

[2020-01-07T16: 53: 49.069Z] Отладка: Выбор транспорта 'WebSockets'.

[2020 -01-07T16: 53: 49.070Z] Трассировка: (транспорт WebSockets) Подключение.

[2020-01-07T16: 55: 25.574Z] Информация: WebSocket подключен к WSS: // локальный: 44344 / ступица ID = BPT4DkdPVgBj-nkOarAyNQ.

Вопрос: Есть ли какая-либо конфигурация на signalR, чтобы избежать этого ожидания перед повторным подключением? (Это то, что происходит только на Net Core 3.1, никогда не было этой проблемы с предыдущими версиями)

Спасибо.

...