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

585
Views
cómo enviar la excepción/error para nestjs websocket del adaptador @nestjs/platform-ws

Estoy tratando de enviar la excepción usando nestjs websocket según las condiciones, intenté usar

throw new WsException('Datos inválidos');

pero sin enviar ninguna excepción

Aquí está el código de ejemplo

 import WebSocket from 'ws'; import { SubscribeMessage, WebSocketGateway, WsException, } from '@nestjs/websockets'; @WebSocketGateway({ path: '/api' }) export class MainGateway { @SubscribeMessage('message') handleMessage(client: WebSocket, payload: any) { if (payload.id === 4) { throw new WsException('Invalid Data'); } client.send(JSON.stringify({ id: payload.id })); } }

y estoy creando la conexión usando angular aquí está el fragmento de código

 export class WsComponent implements OnInit { public value!: number; public subject$ = webSocket('ws://localhost:3000/api'); ngOnInit(): void { const event = { event: 'message', data: { id: 4 } }; this.subject$.subscribe({ next: (v: any) => (this.value = v.id), error: (e) => console.error(e), complete: () => console.info('complete'), }); this.subject$.next(event); } }

Por favor, ayúdame a resolver el problema.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

He luchado con el mismo problema. Creo que el problema es con BaseWsExceptionFilter y su uso de soket.emit. He llegado a lo siguiente:

 import { ArgumentsHost, Catch, HttpException } from "@nestjs/common"; import { BaseWsExceptionFilter, WsException } from "@nestjs/websockets"; @Catch(WsException, HttpException) export class WebsocketExceptionsFilter extends BaseWsExceptionFilter { catch(exception: WsException | HttpException, host: ArgumentsHost) { const client = host.switchToWs().getClient() as WebSocket; const data = host.switchToWs().getData(); const error = exception instanceof WsException ? exception.getError() : exception.getResponse(); const details = error instanceof Object ? { ...error } : { message: error }; client.send(JSON.stringify({ event: "error", data: { id: (client as any).id, rid: data.rid, ...details } })); } }

Bastante seguro de que extends BaseWsExceptionFilter es redundante ya que no usé nada de esa clase. Y luego lo apliqué a mi puerta de enlace:

 @WebSocketGateway() @UseFilters(WebsocketExceptionsFilter) @UsePipes(new ValidationPipe({ transform: true })) export class FeedGateway implements OnGatewayConnection, OnGatewayDisconnect { }

Esto me ayudó a recibir el siguiente error:

 {"event":"error","data":{"id":"7a784ce568767a1016090c6a","rid":"connect","statusCode":400,"message":["language must be a valid enum value"],"error":"Bad Request"}}
about 4 years ago · Juan Pablo Isaza 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!