title: .NET Core SignalR, Server timeoute / Reconnect issue
body: <p>I have a SignalR hub written in my MVC solution, with a Javascript client connecting from the view.</p>
  
  <p>The point of the connection is to receive changes for a wallboard from the server. This has to happen almost instantly and requires a lifetime connection, since the webpage is running on a screen without direct pc access.</p>
  
  <p>So far the SignalR connection works for a couple of hours before it gives error.</p>
  
  <p>The error I get is</p>
  
  <pre><code>Error: Connection disconnected with error 'Error: Server timeout elapsed without receiving a message form the server.'.
  Failed to load resource: net::ERR_CONNECTION_TIMED_OUT
  Warning: Error from HTTP request. 0:
  Error: Failed to complete negotiation with the server: Error
  Error: Failed to start the connection: Error
  
  Uncaught (in promise) Error
      at new HttpError (singlar.js:1436)
      at XMLHttpRequest.xhr.onerror (singalr.js:1583)
  </code></pre>
  
  <p>My client code</p>
  
  <pre><code> let connection = new signalR.HubConnectionBuilder()
      .withUrl("/wbHub")
      .configureLogging(signalR.LogLevel.Information)
      .build();
  
  connection.start().then(function () {
      connection.invoke("GetAllWallboards").then(function (wallboard) {
          for (var i = 0; i &lt; wallboard.length; i++) {
              displayWallboard(wallboard[i]);
          }
          startStreaming();
      })
  })
  
  connection.onclose(function () {
      connection.start().then(function () {
              startStreaming();
      })
  })
  
  function startStreaming() {
      connection.stream("StreamWallboards").subscribe({
          close: false,
          next: displayWallboard
      });
  }
  </code></pre>
  
  <p>Hub Code:</p>
  
  <pre><code>public class WallboardHub : Hub
  {
      private readonly WallboardTicker _WallboardTicker;
  
      public WallboardHub(WallboardTicker wallboardTicker)
      {
          _WallboardTicker = wallboardTicker;
      }
  
      public IEnumerable&lt;Wallboard&gt; GetAllWallboards()
      {
          return _WallboardTicker.GetAllWallboards();
      }
  
      public ChannelReader&lt;Wallboard&gt; StreamWallboards()
      {
          return _WallboardTicker.StreamWallboards().AsChannelReader(10);
      }
  
      public override async Task OnConnectedAsync()
      {
          await Groups.AddToGroupAsync(Context.ConnectionId, "SignalR Users");
          await base.OnConnectedAsync();
      }
  
      public override async Task OnDisconnectedAsync(Exception exception)
      {
          await Groups.RemoveFromGroupAsync(Context.ConnectionId, "SignalR Users");
          await base.OnDisconnectedAsync(exception);
      }
  }
  </code></pre>
  
  <p>Question 1: Is the way I handle reconnecting correct? From the error it feels like the <code>.onclose</code> works, but that it only tries one time? Is there anyway to try for x min before showing error?</p>
  
  <p>Question 2: Reloading the website makes the connection work again, is there potential anyway to refresh the browser on signalR connection error?</p>