Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

275
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda