Creé una página que obtiene datos en tiempo real de mi back-end de funciones de Azure a través de SignalR. Digamos que me quedo en la página, viendo los datos durante 1 hora, y podría desconectarme, el cliente Signalr intentará volver a conectarse automáticamente, esto funciona bien. Pero cuando intenta volver a conectarse, el token jwt podría haber caducado y se lanza un 401 desde el cliente del señalizador.
¿Hay alguna forma de capturar este 401 del cliente del señalador cuando se activa una reconexión?
Muchas personas parecen usar .onclose() pero no funcionará para mí, o buscarán un nuevo token jwt cada vez que se conecten, supongo que esta podría ser la forma en que debo proceder, pero prefiero que sea posible atraparlo en cambio, eso sería una mejor solución en mi opinión.
var connection = new signalR.HubConnectionBuilder() .configureLogging(signalR.LogLevel.Information) .withUrl(config.default.hostname + "/api/v1/core/signalr", { accessTokenFactory: () => store.state.accessToken }) .withAutomaticReconnect([0, 0, 10000]) .build(); connection.start();¡Espero que entiendas lo que estoy buscando aquí! ¡Salud!
Es por eso que en { accessTokenFactory: () => store.state.accessToken } debe pasar una función que actualizará el token. Entonces, cuando el token caduque, buscará automáticamente un nuevo token de este método. Así que no almacene el token en store.state.accessToken ...