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.
1throw new WsException('Invalid credentials.');WsException klassi @nestjs/websockets paketidan import qilinadi.
Yuqoridagi namunada Nest tashlangan exceptionni qayta ishlaydi va quyidagi struktura bilan exception xabarini emit qiladi:
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).
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.
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.