WebSockets1 min read

Exception filterlar

HTTP exception filter qatlamidan web sockets qatlamiga yagona farq shundaki, HttpException tashlash o'rniga WsExceptiondan foydalanishingiz kerak.

HTTP exception filter qatlamidan web sockets qatlamiga yagona farq shundaki, HttpException tashlash o'rniga WsExceptiondan foydalanishingiz kerak.

TypeScript
1throw new WsException('Invalid credentials.');
Hint

WsException klassi @nestjs/websockets paketidan import qilinadi.

Yuqoridagi namunada Nest tashlangan exceptionni qayta ishlaydi va quyidagi struktura bilan exception xabarini emit qiladi:

TypeScript
1{
2  status: 'error',
3  message: 'Invalid credentials.'
4}

Filterlar

Web sockets exception filterlari HTTP exception filterlariga ekvivalent tarzda ishlaydi. Quyidagi misolda qo'lda instansiyalangan method-scoped filter ishlatiladi. HTTP asosidagi ilovalar kabi, gateway-scoped filterlardan ham foydalanishingiz mumkin (ya'ni, gateway klassiga @UseFilters() dekoratorini qo'shing).

TypeScript
1@UseFilters(new WsExceptionFilter())
2@SubscribeMessage('events')
3onEvent(client, data: any): WsResponse<any> {
4  const event = 'events';
5  return { event, data };
6}

Meros olish

Odatda, ilovangiz talablariga moslashtirilgan to'liq custom exception filterlar yaratasiz. Biroq, ayrim hollarda shunchaki core exception filterni kengaytirib, ayrim omillarga qarab xatti-harakatni override qilishni xohlashingiz mumkin.

Exceptionni bazaviy filterga delegatsiya qilish uchun BaseWsExceptionFilterni kengaytirib, meros bo'lib kelgan catch() metodini chaqirishingiz kerak.

TypeScript
1import { Catch, ArgumentsHost } from '@nestjs/common';
2import { BaseWsExceptionFilter } from '@nestjs/websockets';
3
4@Catch()
5export class AllExceptionsFilter extends BaseWsExceptionFilter {
6  catch(exception: unknown, host: ArgumentsHost) {
7    super.catch(exception, host);
8  }
9}

Yuqoridagi implementatsiya yondashuvni ko'rsatadigan soddalashtirilgan skelet xolos. Kengaytirilgan exception filteringiz implementatsiyasida sizning moslashtirilgan biznes mantiqingiz (masalan, turli shartlarni qayta ishlash) bo'ladi.