Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

939
Views
Cómo manejar los errores 401 en el cliente JavaScript de @microsoft/signalr

Estamos utilizando el cliente JavaScript @microsoft/signalr en nuestra interfaz de Vue para establecer una conexión websocket con nuestro backend (.net core). Además, usamos un token de portador para la autenticación.

Este es el generador de conexiones en la interfaz:

 this.connection = new HubConnectionBuilder() .withUrl('/chat', { accessTokenFactory: () => IdService.getToken() }) .configureLogging(LogLevel.Information) .withAutomaticReconnect() .build()

Luego comienzo la conexión en este código:

 HubService.connection.start().then(() => { console.log('Connection started') }).catch(err => { console.error(err) })

Mi problema es que, cuando el token de Bearer caduca en el backend, al volver a conectarme aparece un error 401 en el frontend, que es correcto y quiero responder correctamente a este error. Puedo detectar el error en el bloque catch de la función de inicio, pero no sé cómo manejar el error porque no puedo leer un código de estado de la solicitud como en una solicitud HTTP normal. Es solo un mensaje de error del cliente Signalr. Por supuesto, podría buscar en la cadena '401', pero eso parece incorrecto.

Error: no se pudo iniciar la conexión: Error: no se pudo completar la negociación con el servidor: Error: no autorizado: código de estado '401'

Me gustaría saber en qué parte de mi código y cómo manejar adecuadamente este tipo de error y otros errores. Cualquier ayuda o ideas son apreciadas.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

La forma correcta de hacerlo es que su IdService.getToken() obtenga un token actualizado cuando esté a punto de caducar porque en la documentación de Microsoft se dice que se llama a esta función cada vez que hay una comunicación del cliente al concentrador.

La función de token de acceso que proporciona se llama antes de cada solicitud HTTP realizada por SignalR. Si necesita renovar el token para mantener activa la conexión (porque puede caducar durante la conexión), hágalo desde esta función y devuelva el token actualizado.

Hay muchos ejemplos en los que los proveedores de tokens actualizan el token cuando está a punto de caducar.

Pero si esa corrección/implementación está fuera de su alcance/control, lo único que puede hacer es capturar la excepción e inicializar nuevamente la conexión. Algo como esto:

  1. Atrapa la excepción;
  2. Emite un evento con excepción no autorizada 401.
  3. Captura el evento y simplemente llama al método que inicializa tu conexión.

Pero esta es una solución al problema original, que es la función de actualización de token adecuada.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!