Nous utilisons le client JavaScript @microsoft/signalr dans notre frontend Vue pour établir une connexion websocket avec notre backend (.net core). Nous utilisons également un jeton Bearer pour l'authentification.
C'est le constructeur de connexion dans le frontend :
this.connection = new HubConnectionBuilder()
.withUrl('/chat', { accessTokenFactory: () => IdService.getToken() })
.configureLogging(LogLevel.Information)
.withAutomaticReconnect()
.build()
Puis je lance la connexion dans ce code :
HubService.connection.start().then(() => {
console.log('Connection started')
}).catch(err => {
console.error(err)
})
Mon problème est que lorsque le jeton Bearer expire dans le backend, lors d'une reconnexion, j'obtiens une erreur 401 dans le frontend, ce qui est correct et je veux répondre correctement à cette erreur. Je peux attraper l'erreur dans le bloc catch de la fonction de démarrage, mais je ne sais pas comment gérer l'erreur, car je ne peux pas lire un code d'état de la demande comme dans une demande HTTP normale. C'est juste un message d'erreur du client de signalisation. Bien sûr, je pourrais chercher '401' dans la chaîne de caractères, mais cela ne semble pas correct.
Erreur : Impossible de démarrer la connexion : Erreur : Échec de la négociation avec le serveur : Erreur : Unauthorized : Code d'état '401
J'aimerais savoir où dans mon code et comment traiter correctement ce type d'erreur et d'autres erreurs. Toute aide ou idée est la bienvenue.