我通过SignalR从客户端(angular 9)和服务器(asp.net core 3.1)创建一个实时连接,并通过JWT Token授权枢纽,如以下代码。
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...');
});
}
这工作正常,直到token过期。根据我的研究,在收到新的刷新令牌后,应该停止之前的连接,并使用新的令牌创建一个新的连接,现在我想知道我应该如何做?我必须不断检查令牌吗?还是应该通过向服务器发送每个请求来解决这个问题?
当token过期时,连接将被服务器放弃,你将在服务器端出现错误。我相信是405错误代码 Method now allowed
你会得到的。
所以你需要的是抓住这个令牌过期的错误,并放弃这个连接,这样你就可以用新的令牌开始一个新的连接。