Я создаю соединение в реальном времени через SignalR от клиента (angular 9) и сервера (asp.net core 3.1) и авторизую концентратор с помощью токена JWT, например, как показано ниже:
private createConnection() {
this.hubConnection = new HubConnectionBuilder().withUrl(`${this.appConfig.hubEndpoint}/Hubs`,
{ accessTokenFactory: () => jwtToken })
.withAutomaticReconnect()
.build();
}
private startConnection(): void {
this.hubConnection
.start()
.then(() => {
this.connectionIsEstablished = true;
this.connectionEstablished.emit(true);
})
.catch(err => {
console.log('Error while establishing connection, retrying...');
});
}
это работает нормально, пока не истечет срок действия токена. Согласно моим исследованиям, после получения нового токена с токеном обновления предыдущее соединение должно быть остановлено и должно быть создано новое соединение с новым токеном. Теперь я хочу знать, как мне это сделать? Надо ли постоянно проверять токен? Или это следует решать, отправляя каждый запрос на сервер?
unauthorized
, а затем вы можете перезапустить соединение, еще не реализовали его, но я думаю, что это должно быть сделано именно так - person Kardon63   schedule 06.05.2021undefined
. Мне также было очень сложно возобновить соединение, потому что я использую асинхронный вызов для получения токена, и я оборачиваю всю систему с помощью rxJS, поэтому быстрое и грязное исправление заключалось в перезагрузке страницы при получении события отключения, а также установить агрессивные задержки для автоматического переподключения. - person Mehdi Benmoha   schedule 25.05.2021