[typescript] 타입스크립트로 Nest.js 알림 및 이벤트 처리하기

Nest.js는 TypeScript를 기반으로 한 프레임워크로, 강력한 도구와 기능을 제공하여 효율적인 웹 애플리케이션을 구축할 수 있습니다. 이번 글에서는 Nest.js를 사용하여 알림 및 이벤트 처리를 위한 간단한 가이드를 제공하겠습니다.

Nest.js 및 TypeScript 설정

Nest.js 프로젝트를 생성하고 TypeScript를 이용하여 설정하는 방법은 Nest.js 공식 문서 에 자세히 설명되어 있습니다.

이벤트 기반 아키텍처

Nest.js는 이벤트 기반 아키텍처를 지원하여 강력한 이벤트 처리 기능을 제공합니다. 이벤트이벤트 핸들러를 통해 처리되며, 서로 다른 컴포넌트 간의 통신에 적합합니다.

예를 들어, 사용자의 등록을 알림하고자 할 때, 이벤트를 발생시키고 해당 이벤트를 수신하여 알림을 처리하는 방식으로 구현할 수 있습니다.

알림 처리

Nest.js에서 알림을 처리하기 위해서는 먼저 해당 알림을 이벤트로 정의하고, 해당 이벤트에 대한 이벤트 핸들러를 구현해야 합니다.

아래는 TypeScript를 사용하여 알림 이벤트 및 핸들러를 정의하는 간단한 예제 코드입니다.

// notification.event.ts

export class NotificationEvent {
  constructor(public readonly message: string) {}
}
// notification.handler.ts

import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
import { NotificationEvent } from './notification.event';

@EventsHandler(NotificationEvent)
export class NotificationHandler implements IEventHandler<NotificationEvent> {
  handle(event: NotificationEvent) {
    console.log(`Send notification: ${event.message}`);
    // Add notification sending logic here
  }
}

위의 예제에서 NotificationEvent 클래스는 message를 속성으로 가지며, NotificationHandler 클래스는 NotificationEvent에 대한 이벤트 핸들러를 구현하고 있습니다.

Nest.js 알림 및 이벤트 처리 실습

이제 위에서 정의한 알림 및 이벤트 핸들러를 활용하여 Nest.js 애플리케이션에 적용하는 방법을 실습해보겠습니다.

// notification.controller.ts

import { Controller, Post, Body } from '@nestjs/common';
import { CommandBus } from '@nestjs/cqrs';
import { NotificationEvent } from './notification.event';

@Controller('notification')
export class NotificationController {
  constructor(private readonly commandBus: CommandBus) {}

  @Post()
  async sendNotification(@Body() notificationDto: any) {
    const { message } = notificationDto;
    const event = new NotificationEvent(message);
    await this.commandBus.execute(event);
  }
}

위의 예제 코드에서 NotificationController/notification 엔드포인트를 통해 알림을 보내는 역할을 수행하며, sendNotification 메서드에서는 NotificationEvent를 생성하고 해당 이벤트를 실행하는 로직을 구현하고 있습니다.

마치며

이렇게 Nest.js와 TypeScript를 사용하여 알림 및 이벤트 처리를 구현하는 방법에 대해 간략히 소개해 보았습니다. Nest.js와 TypeScript를 이용하여 강력한 알림 및 이벤트 처리 시스템을 구축할 수 있으니, 이를 활용하여 웹 애플리케이션을 보다 유연하고 확장 가능하게 만들어보시기 바랍니다.

참고 문헌: