Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

268
Vistas
SignalR intercepta todos los mensajes entrantes (lado del cliente)

Tengo una pregunta sobre SignalR en el lado del cliente (JS). ¿Hay alguna forma de interceptar los mensajes entrantes en el lado del cliente? Estoy trabajando en una aplicación de chat con mucho tráfico en el socket. Quiero poder ejecutar código (capturar errores, si los hay) en cada evento entrante.

Mirando los documentos, no puedo encontrar ninguna solución existente para esto. ¿Hay uno?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Después de un poco de investigación, esto no parece ser posible.

Mi primer pensamiento para una solución alternativa fue usar una función para "canalizar" las funciones de devolución de llamada primero.

P.EJ

 private pipeSignal(cb: (arg: any) => void): (arg: any) => void { const errors = checkForErrors(); if(errors){ return () => { // Handle error here }; } return cb; }

Entonces pensé que configurar los controladores podría verse de la siguiente manera:

 this.hubConnection.on( 'MyMethod1', this.pipeSignal((method1Val) => { console.log(method1Val); }) ); this.hubConnection.on( 'MyMethod2', this.pipeSignal((method2Val) => { console.log(method2Val); }) );

PERO , esto da como resultado que la función 'pipeSignal' se llame solo una vez al configurar el detector de eventos. A partir de entonces, no se llamará.

Creo que la única opción aquí sería tener una función que verifique errores en cada devolución de llamada del detector de eventos.

 private hasErrors(arg: any): boolean { const errors = checkForErrors(); if(errors){ // Handle error here return true; } return false; }

Luego, en cada devolución de llamada de evento de señal, puede intentar verificar errores como este:

 this.hubConnection.on( 'MyMethod1', (method1Val) => { if(!this.hasErrors(method1Val)){ // Can continue knowing there are no errors console.log(method1Val); } } );

ACTUALIZAR

Resulta que estaba cerca de mi función 'pipeSignal'. En lugar de ejecutar la lógica de error en la función pipeSignal, devuelvo una función que envuelve la lógica de error y la devolución de llamada:

 private pipeSignal(cb: (arg: any) => void): (arg: any) => void { return (arg) => { const errors = checkForErrors(); if(errors){ // handle errors } else { // proceed with callback as there are no errors cb(arg); } }; }

Ahora esto se puede usar como imaginé antes:

 this.hubConnection.on( 'MyMethod1', this.pipeSignal((method1Val) => { console.log(method1Val); }) );
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda